You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2015/02/23 11:11:37 UTC
[30/41] olingo-odata4-js git commit: [OLINGO-541] Move the odatajs
branch one directory up
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/TestLogger.svc
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/TestLogger.svc b/odatajs/tests/common/TestLogger.svc
deleted file mode 100644
index 164d207..0000000
--- a/odatajs/tests/common/TestLogger.svc
+++ /dev/null
@@ -1,852 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-<%@ ServiceHost Language="C#" Debug="true" Factory="DataJS.Tests.TestSynchronizerFactory" Service="DataJS.Tests.TestSynchronizer" %>
-
-namespace DataJS.Tests
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.ServiceModel;
- using System.ServiceModel.Activation;
- using System.ServiceModel.Channels;
- using System.ServiceModel.Description;
- using System.ServiceModel.Dispatcher;
- using System.ServiceModel.Web;
- using System.Text;
- using System.Threading;
- using System.Xml;
-
- /// <summary>
- /// This factory supports reconfiguring the service to allow incoming messages
- /// to be larger than the default.
- /// </summary>
- public class TestSynchronizerFactory : WebScriptServiceHostFactory
- {
- protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
- {
- var result = base.CreateServiceHost(serviceType, baseAddresses);
- result.Opening += ServiceHostOpening;
- return result;
- }
-
- private static void UpdateService(ServiceDescription description)
- {
- const long LargeMaxReceivedMessageSize = 1024 * 1024 * 16;
- foreach (var endpoint in description.Endpoints)
- {
- var basic = endpoint.Binding as BasicHttpBinding;
- if (basic != null)
- {
- basic.MaxReceivedMessageSize = LargeMaxReceivedMessageSize;
- }
-
- var http = endpoint.Binding as WebHttpBinding;
- if (http != null)
- {
- http.MaxReceivedMessageSize = LargeMaxReceivedMessageSize;
- }
- }
- }
-
- private void ServiceHostOpening(object sender, EventArgs e)
- {
- UpdateService((sender as ServiceHost).Description);
- }
- }
-
- /// <summary>Use this class to log test activity.</summary>
- /// <remarks>
- /// A test run can be created by invoking CreateTestRun. With a test
- /// run ID, the following operations can be invoked:
- ///
- /// - AddTestPages: adds test pages to be made available to future callers (typically to support tests from different files)
- /// - SetTestNamePrefix: sets a string that will be prefixed to every test name in logs (typically to include a browser name)
- /// - MarkInProgress: resets the test run to "in-progress" for another variation (typically to run a different browser)
- /// - IsTestRunInProgress: checks whether it's still in progress
- /// - GetTestRunResults: returns the test results in TRX format
- /// - LogAssert: logs a single assertion in the current test for the run
- /// - LogTestStart: logs a test that has begun execution
- /// - LogTestDone: logs a test that has ended execution
- /// - TestCompleted: logs that a test has completed execution; returns the next page with tests or an empty string
- /// </remarks>
- [ServiceContract]
- [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
- [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
- public class TestSynchronizer
- {
- private static readonly Dictionary<string, TestRunContext> testRuns = new Dictionary<string, TestRunContext>();
- private const string Inconclusive = "Inconclusive";
- private const string InProgress = "InProgress";
- private const string Failed = "Failed";
- private const string Passed = "Passed";
- private const string Completed = "Completed";
-
- /// <summary>
- /// Adds test pages to the specified runs; replaces existing files (helps with reliablity when something
- /// fails part-way).
- /// </summary>
- /// <remarks>This method is typically called by the test harness.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public int AddTestPages(string testRunId, string pages, string filter)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- context.TestPages.Clear();
- context.TestPages.AddRange(pages.Split(',').Select(page => page + "?testRunId=" + testRunId + (filter == null ? string.Empty : "?filter=" + filter)));
- return context.TestPages.Count;
- }
- }
-
- /// <remarks>This method is typically called by the test harness.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public string CreateTestRun()
- {
- DisableResponseCaching();
-
- Guid value = Guid.NewGuid();
- string result = value.ToString();
- TestRunContext context = CreateTestRunContextWithId(value);
-
- lock (testRuns)
- {
- testRuns.Add(result, context);
- }
-
- return result;
- }
-
- /// <summary>Checks whether the test run is in progress.</summary>
- /// <remarks>This method is typically called by the test harness.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public bool IsTestRunInProgress(string testRunId)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- return context.TestRun.ResultSummary.Outcome == InProgress;
- }
-
- /// <summary>Provides a list of all test runs being tracked.</summary>
- [OperationContract]
- [WebGet(ResponseFormat=WebMessageFormat.Json)]
- public IEnumerable<string> GetActiveTestRuns()
- {
- DisableResponseCaching();
-
- List<string> result;
- lock (testRuns)
- {
- result = new List<string>(testRuns.Keys);
- }
-
- return result;
- }
-
- /// <remarks>This method is typically called by the test harness.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Xml)]
- public Message GetTestRunResults(string testRunId)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- TestRun run = context.TestRun;
- this.CompleteTestRun(run);
-
- TestRunXmlBodyWriter writer = new TestRunXmlBodyWriter(run);
- return Message.CreateMessage(
- MessageVersion.None,
- OperationContext.Current.OutgoingMessageHeaders.Action,
- writer);
- }
- }
-
- /// <remarks>This method is typically called by the test case.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public void LogAssert(string testRunId, bool pass, string message, string name, string actual, string expected)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- TestRun run = context.TestRun;
- string prefixedName = context.TestNamePrefix + name;
- TestResult result = run.TestResults.LastOrDefault(r => r.TestName == prefixedName);
- if (result == null)
- {
- throw new InvalidOperationException("Unable to find test " + prefixedName + " in run " + testRunId);
- }
-
- result.DebugTrace.AppendLine(message);
- if (!pass)
- {
- result.ErrorMessages.AppendLine(message);
- result.ErrorMessages.AppendLine("Expected: " + expected);
- result.ErrorMessages.AppendLine("Actual: " + actual);
- }
- }
- }
-
- /// <remarks>This method is typically called by the test case.</remarks>
- [OperationContract]
- [WebInvoke(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
- public void LogBatch(string[] urls)
- {
- DisableResponseCaching();
-
- foreach (var url in urls)
- {
- Uri parsed = new Uri(OperationContext.Current.Channel.LocalAddress.Uri, url);
- string methodName = parsed.Segments[parsed.Segments.Length - 1];
- System.Reflection.MethodInfo method = this.GetType().GetMethod(methodName);
- System.Reflection.ParameterInfo[] parameterInfos = method.GetParameters();
- object[] parameters = new object[parameterInfos.Length];
- System.Collections.Specialized.NameValueCollection query = System.Web.HttpUtility.ParseQueryString(parsed.Query);
- for (int i = 0; i < parameters.Length; i++)
- {
- object value = query[parameterInfos[i].Name];
- parameters[i] = Convert.ChangeType(value, parameterInfos[i].ParameterType, System.Globalization.CultureInfo.InvariantCulture);
- }
-
- method.Invoke(this, parameters);
- }
- }
-
- /// <remarks>This method is typically called by the test case.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public void LogTestStart(string testRunId, string name, DateTime startTime)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- TestRun run = context.TestRun;
- string prefixedName = context.TestNamePrefix + name;
- Guid testId = Guid.NewGuid();
- Guid executionId = Guid.NewGuid();
- Guid testListId = run.TestLists.Single().Id;
- run.TestDefinitions.Add(new TestDefinition()
- {
- Id = testId,
- Name = prefixedName,
- ExecutionId = executionId,
- });
- run.TestEntries.Add(new TestEntry()
- {
- TestId = testId,
- ExecutionId = executionId,
- TestListId = testListId
- });
- run.TestResults.Add(new TestResult()
- {
- ExecutionId = executionId,
- TestId = testId,
- TestListId = testListId,
- TestName = prefixedName,
- ComputerName = Environment.MachineName,
- StartTime = startTime,
- EndTime = startTime,
- TestType = Guid.Parse("13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"),
- Outcome = InProgress,
- // RelativeResultsDirectory?
- });
- }
- }
-
- /// <remarks>This method is typically called by the test case.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public void LogTestDone(string testRunId, string name, int failures, int total, DateTime endTime)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- TestRun run = context.TestRun;
- string prefixedName = context.TestNamePrefix + name;
- TestResult result = run.TestResults.LastOrDefault(r => r.TestName == prefixedName);
- if (failures > 0)
- {
- result.Outcome = Failed;
- }
- else
- {
- result.Outcome = Passed;
- }
-
- result.EndTime = endTime;
- }
- }
-
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public void MarkInProgress(string testRunId)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- context.TestRun.ResultSummary.Outcome = InProgress;
- }
- }
-
- /// <remarks>This method is typically called by the test harness.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public void SetTestNamePrefix(string testRunId, string prefix)
- {
- DisableResponseCaching();
-
- TestRunContext context = GetTestRunContext(testRunId);
- lock (context)
- {
- context.TestNamePrefix = prefix;
- }
- }
-
- /// <remarks>This method is typically called by the test case.</remarks>
- [OperationContract]
- [WebGet(ResponseFormat = WebMessageFormat.Json)]
- public string TestCompleted(string testRunId, int failures, int total)
- {
- DisableResponseCaching();
-
- var context = GetTestRunContext(testRunId);
- lock (context)
- {
- string result;
- if (context.TestPages.Count == 0)
- {
- context.TestRun.ResultSummary.Outcome = Completed;
- result = "";
- }
- else
- {
- result = context.TestPages[0];
- context.TestPages.RemoveAt(0);
- }
-
- return result;
- }
- }
-
- private static TestRunContext CreateTestRunContextWithId(Guid value)
- {
- TestRun run = new TestRun();
- run.Id = value;
- run.Name = "Test run";
- run.TestTimes.Creation = DateTime.Now;
- run.TestTimes.Queueing = DateTime.Now;
- run.TestLists.Add(new TestList()
- {
- Name = "All Results",
- Id = Guid.NewGuid()
- });
-
- // For the time being, set up a fake test settings.
- run.TestSettings.Id = Guid.NewGuid();
-
- run.ResultSummary.Outcome = InProgress;
-
- TestRunContext context = new TestRunContext();
- context.TestRun = run;
-
- return context;
- }
-
- private static void DisableResponseCaching()
- {
- WebOperationContext.Current.OutgoingResponse.Headers[HttpResponseHeader.CacheControl] = "no-cache";
- }
-
- private static TestRunContext GetTestRunContext(string testRunId)
- {
- if (testRunId == null)
- {
- throw new ArgumentNullException("testRunId");
- }
-
- lock (testRuns)
- {
- // For an 0-filled GUID, allow create-on-demand to simplify ad-hoc testing.
- // Something like:
- // http://localhost:8989/tests/odata-qunit-tests.htm?testRunId=00000000-0000-0000-0000-000000000000
- if (!testRuns.ContainsKey(testRunId))
- {
- Guid value = Guid.Parse(testRunId);
- if (value == Guid.Empty)
- {
- TestRunContext context = CreateTestRunContextWithId(value);
- testRuns.Add(testRunId, context);
- }
- }
-
- return testRuns[testRunId];
- }
- }
-
- private void CompleteTestRun(TestRun run)
- {
- run.TestTimes.Finish = DateTime.Now;
-
- // Fill counts in result object.
- var summary = run.ResultSummary;
- summary.Executed = 0;
- summary.Error = 0;
- summary.Failed = 0;
- summary.Timeout = 0;
- summary.Aborted = 0;
- summary.Inconclusive = 0;
- summary.PassedButRunAborted = 0;
- summary.NotRunnable = 0;
- summary.NotExecuted = 0;
- summary.Disconnected = 0;
- summary.Warning = 0;
- summary.Passed = 0;
- summary.Completed = 0;
- summary.InProgress = 0;
- summary.Pending = 0;
-
- foreach (var testResult in run.TestResults)
- {
- string outcome = testResult.Outcome;
- switch (outcome)
- {
- case InProgress:
- summary.Executed++;
- summary.InProgress++;
- break;
- case Failed:
- summary.Executed++;
- summary.Completed++;
- summary.Failed++;
- break;
- case Passed:
- summary.Executed++;
- summary.Completed++;
- summary.Passed++;
- break;
- default:
- summary.Failed++;
- break;
- }
- }
-
- summary.Total = run.TestResults.Count;
-
- if (summary.Failed != 0)
- {
- summary.Outcome = Failed;
- }
- else if (summary.Total <= 0 || summary.Passed < summary.Total)
- {
- summary.Outcome = Inconclusive;
- }
- else
- {
- summary.Outcome = Passed;
- }
- }
- }
-
- public class TestRunContext
- {
- public TestRunContext()
- {
- this.TestPages = new List<string>();
- }
-
- public TestRun TestRun { get; set; }
- public string TestNamePrefix { get; set; }
- public List<string> TestPages { get; set; }
- }
-
- public class TestResultWriter
- {
- private const string TestNamespace = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010";
-
- public static void WriteTestRun(TestRun run, string path)
- {
- if (run == null)
- {
- throw new ArgumentNullException("run");
- }
- if (path == null)
- {
- throw new ArgumentNullException("path");
- }
-
- using (XmlWriter writer = XmlWriter.Create(path))
- {
- WriteTestRun(run, path);
- }
- }
-
- public static void WriteTestRun(TestRun run, XmlWriter writer)
- {
- if (run == null)
- {
- throw new ArgumentNullException("run");
- }
- if (writer == null)
- {
- throw new ArgumentNullException("writer");
- }
-
- writer.WriteStartElement("TestRun", TestNamespace);
- writer.WriteGuidIfPresent("id", run.Id);
- writer.WriteAttributeString("name", run.Name);
- writer.WriteAttributeString("runUser", run.RunUser);
-
- WriteTestSettings(run.TestSettings, writer);
- WriteResultSummary(run.ResultSummary, writer);
-
- // Write test definitions.
- writer.WriteStartElement("TestDefinitions", TestNamespace);
- foreach (var definition in run.TestDefinitions)
- {
- WriteTestDefinition(definition, writer);
- }
-
- writer.WriteEndElement();
-
- // Write test lists.
- writer.WriteStartElement("TestLists", TestNamespace);
- foreach (var list in run.TestLists)
- {
- WriteTestList(list, writer);
- }
-
- writer.WriteEndElement();
-
- // Write test entries.
- writer.WriteStartElement("TestEntries", TestNamespace);
- foreach (var entry in run.TestEntries)
- {
- WriteTestEntry(entry, writer);
- }
-
- writer.WriteEndElement();
-
- // Write test results.
- writer.WriteStartElement("Results", TestNamespace);
- foreach (var result in run.TestResults)
- {
- WriteTestResults(result, writer);
- }
-
- writer.WriteEndElement();
-
- // Close the test run element.
- writer.WriteEndElement();
- }
-
- private static void WriteTestResults(TestResult result, XmlWriter writer)
- {
- if (result == null)
- {
- throw new ArgumentNullException("result");
- }
-
- writer.WriteStartElement("UnitTestResult", TestNamespace);
- writer.WriteGuidIfPresent("testId", result.TestId);
- writer.WriteGuidIfPresent("testListId", result.TestListId);
- writer.WriteGuidIfPresent("executionId", result.ExecutionId);
- writer.WriteGuidIfPresent("RelativeResultsDirectory", result.RelativeResultsDirectory);
-
- writer.WriteAttributeString("testName", result.TestName);
- writer.WriteAttributeString("computerName", result.ComputerName);
- writer.WriteAttributeString("duration", result.Duration.ToString());
- writer.WriteAttributeString("startTime", XmlConvert.ToString(result.StartTime));
- writer.WriteAttributeString("endTime", XmlConvert.ToString(result.EndTime));
- writer.WriteAttributeString("outcome", result.Outcome);
-
- writer.WriteGuidIfPresent("testType", result.TestType);
-
- if (result.DebugTrace.Length > 0)
- {
- writer.WriteStartElement("Output");
-
- writer.WriteStartElement("DebugTrace");
- writer.WriteString(result.DebugTrace.ToString());
- writer.WriteEndElement();
-
- writer.WriteStartElement("ErrorInfo");
- writer.WriteStartElement("Message");
- writer.WriteString(result.ErrorMessages.ToString());
- writer.WriteEndElement();
- writer.WriteEndElement();
-
- writer.WriteEndElement();
- }
-
- writer.WriteEndElement();
- }
-
- private static void WriteTestEntry(TestEntry entry, XmlWriter writer)
- {
- if (entry == null)
- {
- throw new ArgumentNullException("entry");
- }
-
- writer.WriteStartElement("TestEntry", TestNamespace);
- writer.WriteGuidIfPresent("testId", entry.TestId);
- writer.WriteGuidIfPresent("testListId", entry.TestListId);
- writer.WriteGuidIfPresent("executionId", entry.ExecutionId);
- writer.WriteEndElement();
- }
-
- private static void WriteTestList(TestList list, XmlWriter writer)
- {
- if (list == null)
- {
- throw new ArgumentNullException("list");
- }
-
- writer.WriteStartElement("TestList", TestNamespace);
- writer.WriteAttributeString("name", list.Name);
- writer.WriteGuidIfPresent("id", list.Id);
- writer.WriteEndElement();
- }
-
- private static void WriteTestDefinition(TestDefinition definition, XmlWriter writer)
- {
- if (definition == null)
- {
- throw new ArgumentNullException("definition");
- }
-
- writer.WriteStartElement("UnitTest", TestNamespace);
- writer.WriteAttributeString("name", definition.Name);
- writer.WriteAttributeString("storage", definition.Storage);
- writer.WriteGuidIfPresent("id", definition.Id);
-
- // There are more thing we could write here: DeploymentItems, Execution, TestMethod
-
- // This is the minimum needed to load the test in the IDE.
- writer.WriteStartElement("Execution", TestNamespace);
- writer.WriteGuidIfPresent("id", definition.ExecutionId);
- writer.WriteEndElement();
-
- writer.WriteStartElement("TestMethod", TestNamespace);
- writer.WriteAttributeString("codeBase", "fake-test-file.js");
- writer.WriteAttributeString("adapterTypeName", "Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
- writer.WriteAttributeString("className", "FakeClassName, TestLogging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
- writer.WriteAttributeString("name", definition.Name);
- writer.WriteEndElement();
-
- writer.WriteEndElement();
- }
-
- private static void WriteResultSummary(ResultSummary resultSummary, XmlWriter writer)
- {
- if (resultSummary == null)
- {
- throw new ArgumentNullException("resultSummary");
- }
-
- writer.WriteStartElement("ResultSummary", TestNamespace);
- writer.WriteAttributeString("outcome", resultSummary.Outcome);
-
- writer.WriteStartElement("Counters", TestNamespace);
-
- foreach (var p in typeof(ResultSummary).GetProperties())
- {
- if (p.PropertyType != typeof(int))
- {
- continue;
- }
-
- int value = (int)p.GetValue(resultSummary, null);
- string attributeName = p.Name;
- attributeName = attributeName.Substring(0, 1).ToLowerInvariant() + attributeName.Substring(1);
- writer.WriteAttributeString(attributeName, value.ToString());
- }
-
- writer.WriteEndElement();
- writer.WriteEndElement();
- }
-
- private static void WriteTestSettings(TestSettings testSettings, XmlWriter writer)
- {
- if (testSettings == null)
- {
- throw new ArgumentNullException("testSettings");
- }
-
- writer.WriteStartElement("TestSettings", TestNamespace);
- writer.WriteAttributeString("name", testSettings.Name);
- writer.WriteGuidIfPresent("id", testSettings.Id);
- // There are more things we could write here.
- writer.WriteEndElement();
- }
- }
-
- public static class XmlWriterExtensions
- {
- public static void WriteGuidIfPresent(this XmlWriter writer, string attributeName, Guid value)
- {
- if (value != Guid.Empty)
- {
- writer.WriteAttributeString(attributeName, value.ToString());
- }
- }
- }
-
- public class TestRun
- {
- public TestRun()
- {
- this.TestDefinitions = new List<TestDefinition>();
- this.TestLists = new List<TestList>();
- this.TestEntries = new List<TestEntry>();
- this.TestResults = new List<TestResult>();
- this.ResultSummary = new ResultSummary();
- this.TestTimes = new TestTimes();
- this.TestSettings = new TestSettings();
-
- this.Id = Guid.NewGuid();
- this.RunUser = Environment.UserDomainName + "\\" + Environment.UserName;
- }
-
- public Guid Id { get; set; }
- public string Name { get; set; }
- public string RunUser { get; set; }
- public TestSettings TestSettings { get; set; }
- public TestTimes TestTimes { get; set; }
- public ResultSummary ResultSummary { get; set; }
- public List<TestDefinition> TestDefinitions { get; set; }
- public List<TestList> TestLists { get; set; }
- public List<TestEntry> TestEntries { get; set; }
- public List<TestResult> TestResults { get; set; }
- }
-
- public class TestSettings
- {
- public Guid Id { get; set; }
- public string Name { get; set; }
- }
-
- public class TestTimes
- {
- public DateTime Creation { get; set; }
- public DateTime Queueing { get; set; }
- public DateTime Start { get; set; }
- public DateTime Finish { get; set; }
- }
-
- public class ResultSummary
- {
- public string Outcome { get; set; }
- public int Total { get; set; }
- public int Executed { get; set; }
- public int Error { get; set; }
- public int Failed { get; set; }
- public int Timeout { get; set; }
- public int Aborted { get; set; }
- public int Inconclusive { get; set; }
- public int PassedButRunAborted { get; set; }
- public int NotRunnable { get; set; }
- public int NotExecuted { get; set; }
- public int Disconnected { get; set; }
- public int Warning { get; set; }
- public int Passed { get; set; }
- public int Completed { get; set; }
- public int InProgress { get; set; }
- public int Pending { get; set; }
- }
-
- public class TestDefinition
- {
- public string Name { get; set; }
- public string Storage { get; set; }
- public Guid Id { get; set; }
- public Guid ExecutionId { get; set; }
- }
-
- public class TestList
- {
- public string Name { get; set; }
- public Guid Id { get; set; }
- }
-
- public class TestEntry
- {
- public Guid TestId { get; set; }
- public Guid ExecutionId { get; set; }
- public Guid TestListId { get; set; }
- }
-
- public class TestResult
- {
- public TestResult()
- {
- this.DebugTrace = new StringBuilder();
- this.ErrorMessages = new StringBuilder();
- }
-
- public Guid ExecutionId { get; set; }
- public Guid TestId { get; set; }
- public string TestName { get; set; }
- public string ComputerName { get; set; }
- public TimeSpan Duration { get { return this.EndTime - this.StartTime; } }
- public DateTime StartTime { get; set; }
- public DateTime EndTime { get; set; }
- public Guid TestType { get; set; }
- public string Outcome { get; set; }
- public Guid TestListId { get; set; }
- public Guid RelativeResultsDirectory { get; set; }
- public StringBuilder DebugTrace { get; set; }
- public StringBuilder ErrorMessages { get; set; }
- }
-
- class TestRunXmlBodyWriter : BodyWriter
- {
- private readonly TestRun run;
-
- public TestRunXmlBodyWriter(TestRun run)
- : base(true)
- {
- this.run = run;
- }
-
- protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
- {
- TestResultWriter.WriteTestRun(this.run, writer);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/TestSynchronizerClient.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/TestSynchronizerClient.js b/odatajs/tests/common/TestSynchronizerClient.js
deleted file mode 100644
index 157654e..0000000
--- a/odatajs/tests/common/TestSynchronizerClient.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// TestSynchronizer Client
-// Use to log assert pass/fails and notify mstest a test has completed execution
-
-(function (window, undefined) {
- var testRunId = "";
- var serviceRoot = "./common/TestLogger.svc/";
- var recording = null;
- var recordingLength = 0;
- var maxStringLength = 8192;
- var maxPostLength = 2097152;
-
- var callTestSynchronizer = function (methodName, parameterUrl) {
- /** Invokes a function on the test synchronizer.
- * @param {String} [partialUrl] -
- * @returns {String} A response from the server, possibly null.
-
- * If the recording variable is assigned, then the call is logged
- * but nothing is invoked.
- */
-
-
- var partialUrl;
- if (testRunId) {
- partialUrl = methodName + "?testRunId=" + testRunId + "&" + parameterUrl;
- }
- else {
- partialUrl = methodName + "?" + parameterUrl;
- }
-
- var url = serviceRoot + partialUrl;
-
- if (recording) {
- if (url.length > maxStringLength) {
- url = url.substr(0, maxStringLength);
- }
-
- recordingLength += url.length;
- if (recordingLength > maxPostLength) {
- submitRecording();
- recording = [];
- recordingLength = url.length;
- }
-
- recording.push(url);
- return null;
- }
-
- var xhr;
- if (window.XMLHttpRequest) {
- xhr = new window.XMLHttpRequest();
- } else {
- xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0");
- }
-
- xhr.open("GET", url, false);
- xhr.send();
- return xhr.responseText;
- };
-
- var getLogPrefix = function (result) {
- /** Returns the log prefix for a given result
- * @param {Boolean} result - Whether the result is pass or fail. If null, the log line is assumed to be diagnostic
- */
- return "[" + getShortDate() + "] " + (result === true ? "[PASS] " : (result === false ? "[FAIL] " : ""));
- };
-
- var getShortDate = function () {
- /** Returns the current date and time formatted as "yyyy-mm-dd hh:mm:ss.nnn".*/
- var padToLength = function (number, length) {
- var result = number + "";
- var lengthDiff = length - result.length;
- for (var i = 0; i < lengthDiff; i++) {
- result = "0" + result;
- }
-
- return result;
- }
-
- var date = new Date();
- var day = padToLength(date.getDate(), 2);
- var month = padToLength(date.getMonth() + 1, 2);
- var year = date.getFullYear();
-
- var hours = padToLength(date.getHours(), 2);
- var minutes = padToLength(date.getMinutes(), 2);
- var seconds = padToLength(date.getSeconds(), 2);
- var milliseconds = padToLength(date.getMilliseconds(), 3);
-
- return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds;
- };
-
- var submitRecording = function () {
- var body = { urls: recording };
- postToUrl("LogBatch", body);
- };
-
- var postToUrl = function (methodName, body) {
- /** POSTs body to the designated methodName.
- */
- var xhr;
- if (window.XMLHttpRequest) {
- xhr = new window.XMLHttpRequest();
- } else {
- xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0");
- }
-
- var url = serviceRoot + methodName;
- xhr.open("POST", url, false);
- xhr.setRequestHeader("Content-Type", "application/json");
- xhr.send(window.JSON.stringify(body));
- if (xhr.status < 200 || xhr.status > 299) {
- throw { message: "Unable to POST to url.\r\n" + xhr.responseText };
- }
-
- return xhr.responseText;
- }
-
- function LogAssert(result, message, name, expected, actual) {
- var parameterUrl = "pass=" + result + "&message=" + encodeURIComponent(message) + "&name=" + encodeURIComponent(name);
-
- if (!result) {
- parameterUrl += "&actual=" + encodeURIComponent(actual) + "&expected=" + encodeURIComponent(expected);
- }
-
- callTestSynchronizer("LogAssert", parameterUrl);
- }
-
- function LogTestStart(name) {
- callTestSynchronizer("LogTestStart", "name=" + encodeURIComponent(name) + "&startTime=" + encodeURIComponent(getShortDate()));
- }
-
- function LogTestDone(name, failures, total) {
- callTestSynchronizer("LogTestDone", "name=" + encodeURIComponent(name) + "&failures=" + failures + "&total=" + total + "&endTime=" + encodeURIComponent(getShortDate()));
- }
-
- function TestCompleted(failures, total) {
- return callTestSynchronizer("TestCompleted", "failures=" + failures + "&total=" + total);
- }
-
- var extractTestRunId = function () {
- /** Extracts the testRunId value from the window query string.
- * @returns {String} testRunId, possibly empty.
- */
- var i, len;
- var uri = window.location.search;
- if (uri) {
- var parameters = uri.split("&");
- for (i = 0, len = parameters.length; i < len; i++) {
- var index = parameters[i].indexOf("testRunId=");
- if (index >= 0) {
- return parameters[i].substring(index + "testRunId=".length);
- }
- }
- }
-
- return "";
- };
-
- var init = function (qunit) {
- /** Initializes the test logger synchronizer.
- * @param qunit - Unit testing to hook into.
- * If there is no testRunId present, the QUnit functions are left as they are.</remarks>
- */
- var logToConsole = function (context) {
- if (window.console && window.console.log) {
- window.console.log(context.result + ' :: ' + context.message);
- }
- };
-
- testRunId = extractTestRunId();
- if (!testRunId) {
- qunit.log = logToConsole;
- } else {
- recording = [];
- qunit.log = function (context) {
- logToConsole(context);
-
- var name = qunit.config.current.testName;
- if (!(context.actual && context.expected)) {
- context.actual = context.result;
- context.expected = true;
- }
- LogAssert(context.result, getLogPrefix(context.result) + context.message, name, window.JSON.stringify(context.expected), window.JSON.stringify(context.actual));
- };
-
- qunit.testStart = function (context) {
- LogTestStart(context.name);
- };
-
- qunit.testDone = function (context) {
- LogTestDone(context.name, context.failed, context.total);
- }
-
- qunit.done = function (context) {
- submitRecording();
- recording = null;
-
- var nextUrl = TestCompleted(context.failed, context.total);
- nextUrl = JSON.parse(nextUrl).d;
- if (nextUrl) {
- window.location.href = nextUrl;
- }
- }
- }
- };
-
- window.TestSynchronizer = {
- init: init
- };
-})(window);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/common.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/common.js b/odatajs/tests/common/common.js
deleted file mode 100644
index 8151fc1..0000000
--- a/odatajs/tests/common/common.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-(function (window, undefined) {
- window.temp = window.odatajs;
- window.temp.store = window.odatajs.store;
- window.temp.cache = window.odatajs.cache;
- window.odatajs = window.temp;
- delete window.temp;
-})(this);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/djstest-browser.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/djstest-browser.js b/odatajs/tests/common/djstest-browser.js
deleted file mode 100644
index c37f7e9..0000000
--- a/odatajs/tests/common/djstest-browser.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-// Because this code contains a init function to be useable directly inside the browser as well as in nodejs
-// we define the @namespace djstest here instead of the a @module name djstest
-
-/** Create namespace djstest in window.djstest when this file is loaded as JavaScript by the browser
- * @namespace djstest
- */
-
-
-var init = function init () {
-
- var localDjstest = {};
-
- // Initialize indexedDB if the window object is available
- localDjstest.indexedDB = window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.indexedDB;
-
- /** Cleans all the test data saved in the IndexedDb database.
- * @param {Array} storeNames - Array of store objects with a property that is the name of the store
- * @param {Function} done - Callback function
- */
- localDjstest.cleanStoreOnIndexedDb = function (storeObjects, done) {
- var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || {};
-
- function deleteObjectStores(db) {
- for ( var i = 0 ; i < db.objectStoreNames.length ; i ++) {
- db.deleteObjectStore(db.objectStoreNames[i]);
- }
- }
- var job;
-
- if (localDjstest.indexedDB) {
- job = new djstest.Job();
- for ( var i = 0 ; i < storeObjects.length ; i ++) {
- storeObject = storeObjects[i];
- job.queue((function (storeObject) {
- return function (success, fail) {
- var dbname = "_datajs_" + storeObject.name;
- var request = localDjstest.indexedDB.open(dbname);
- request.onsuccess = function (event) {
- var db = request.result;
-
- if ("setVersion" in db) {
- var versionRequest = db.setVersion("0.1");
- versionRequest.onsuccess = function (event) {
- var transaction = versionRequest.transaction;
- transaction.oncomplete = function () {
- db.close();
- success();
- };
- deleteObjectStores(db);
- };
- versionRequest.onerror = function (e) {
- djstest.fail("Error on cleanup - code: " + e.code + " name: " + e.name + "message: " + message);
- fail();
- };
- return;
- }
-
- // new api cleanup
- db.close();
- var deleteRequest = localDjstest.indexedDB.deleteDatabase(dbname);
- deleteRequest.onsuccess = function (event) {
- djstest.log("djstest indexeddb cleanup - deleted database " + dbname);
- success();
- };
- deleteRequest.onerror = function (e) {
- djstest.fail("djstest indexeddb cleanup - error deleting database " + dbname);
- fail();
- };
- djstest.log("djstest indexeddb cleanup - requested deletion of database " + dbname);
- };
-
- request.onerror = function (e) {
- djstest.fail(e.code + ": " + e.message);
- };
- };
- })(storeObject));
- }
- }
-
- if (job) {
- job.run(function (succeeded) {
- if (!succeeded) {
- djstest.fail("cleanup job failed");
- }
- done();
- });
- }
- else {
- done();
- }
- };
-
-
- // Disable caching to ensure that every test-related AJAX request is actually being sent,
- // and set up a default error handler
- if (typeof window !== undefined) {
- $.ajaxSetup({
- cache: false,
- error: function (jqXHR, textStatus, errorThrown) {
- // Work around bug in IE-Mobile on Windows Phone 7
- if (jqXHR.status !== 1223) {
- var err = {
- status: jqXHR.status,
- statusText: jqXHR.statusText,
- responseText: jqXHR.responseText
- };
- djstest.fail("AJAX request failed with: " + djstest.toString(err));
- }
- djstest.done();
- }
- });
- }
- return localDjstest;
-};
-
-//export djstest
-
-if (typeof window !== 'undefined') {
- //expose to browsers window object
- if ( window.djstest === undefined) {
- window.djstest = init();
- } else {
- var tmp = init();
- $.extend( window.djstest,tmp);
- }
-} else {
- //expose in commonjs style
- module.exports = init();
-}
-
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/djstest.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/djstest.js b/odatajs/tests/common/djstest.js
deleted file mode 100644
index 5268467..0000000
--- a/odatajs/tests/common/djstest.js
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-// Because this code contains a init function to be useable directly inside the browser as well as in nodejs
-// we define the @namespace djstest here instead of the a @module name djstest
-
-/** Create namespace djstest in window.djstest when this file is loaded as JavaScript by the browser
- * @namespace djstest
- */
-
-
-var init = function init () {
- var djstest = {};
-
-
- /** Constructs a Job object that allows for enqueuing and synchronizing the execution of functions.
- * @class Job
- * @constructor
- * @returns {Object} Job object
- */
- djstest.Job = function () {
-
- var currentTask = -1;
- var tasks = [];
-
- var failedTasks = 0;
-
- /** Adds a function to the job queue regardless if the queue is already executing or not.
- * @method djstest.Job#queue
- * @param {Function} fn - Function to execute.
- */
- this.queue = function (fn) {
-
- tasks.push(fn);
- };
-
- /** Adds a function to the front of the job queue regardless if the queue is already executing or not.
- * @method djstest.Job#queueNext
- * @param {Function} fn - Function to execute.
- */
- this.queueNext = function (fn) {
-
- if (currentTask < 0) {
- tasks.unshift(fn);
- } else {
- tasks.splice(currentTask + 1, 0, fn);
- }
- };
-
- /** Starts the execution of this job.
- * @method djstest.Job#run
- * @param {Function} done - Callback invoked when the job has finished executing all of its enqueued tasks.
- */
- this.run = function (done) {
- /// This method does nothing if called on a unit of work that is already executing.
- if (currentTask >= 0) {
- return;
- }
-
- if (tasks.length === 0) {
- done(true);
- return;
- }
-
- /**
- * @method djstest.Job~makeTaskDoneCallBack
- */
- function makeTaskDoneCallBack(failed) {
- return function () {
- // Track the failed task and continue the execution of the job.
- if (failed) {
- failedTasks++;
- }
- currentTask++;
- if (currentTask === tasks.length) {
- done(failedTasks === 0);
- } else {
- runNextTask();
- }
- };
- }
-
- /** Executes the next function in the queue.
- * @method djstest.Job~runNextTask
- */
- function runNextTask() {
- defer(function () {
- try {
- tasks[currentTask](makeTaskDoneCallBack(false), makeTaskDoneCallBack(true));
- } catch (e) {
- makeTaskDoneCallBack(true)();
- }
- });
- }
-
- currentTask = 0;
- runNextTask();
- };
- };
-
- /** Defers the execution of an arbitrary function that takes no parameters.
- * @memberof djstest
- * @inner
- * @param {Function} fn - Function to schedule for later execution.
- */
- function defer(fn) {
- setTimeout(fn, 0);
- }
-
- /** Exposes date values for Date objects to facilitate debugging
- * @memberof djstest
- * @inner
- * @param {Object} data - The object to operate on
- */
- function exposeDateValues(data) {
-
- if (typeof data === "object") {
- if (data instanceof Date) {
- data.__date__ = data.toUTCString();
- }
- else {
- for (var prop in data) {
- exposeDateValues(data[prop]);
- }
- }
- }
-
- return data;
- }
-
- /** Determines the name of a function.
- * @memberof djstest
- * @inner
- * @param {String} text - Function text.
- * @returns {String} The name of the function from text if found; the original text otherwise.
- */
- function extractFunctionName(text) {
-
- var index = text.indexOf("function ");
- if (index < 0) {
- return text;
- }
-
- var nameStart = index + "function ".length;
- var parensIndex = text.indexOf("(", nameStart);
- if (parensIndex < 0) {
- return text;
- }
-
- var result = text.substr(nameStart, parensIndex - nameStart);
- if (result.indexOf("test") === 0) {
- result = result.substr("test".length);
- }
-
- return result;
- }
-
- /** Removes metadata annotations from the specified object.
- * @memberof djstest
- * @inner
- * @param data - Object to remove metadata from; possibly null.
- */
- function removeMetadata(data) {
-
- if (typeof data === "object" && data !== null) {
- delete data.__metadata;
- for (var prop in data) {
- removeMetadata(data[prop]);
- }
- }
- }
-
- /** Add the unit test cases
- * @param disable - Indicate whether this test case should be disabled
- */
- djstest.addFullTest = function (disable, fn, name, arg, timeout) {
-
- if (disable !== true) {
- djstest.addTest(fn, name, arg, timeout);
- }
- };
-
- /** Add the unit test cases
- * @param disable - Indicate whether this test case should be disabled
- */
- djstest.addTest = function (fn, name, arg, timeout) {
- if (!name) {
- name = extractFunctionName(fn.toString());
- }
-
- test(name, function () {
- if (!timeout) {
- timeout = 20000;
- }
-
- QUnit.config.testTimeout = timeout;
- QUnit.stop();
- fn.call(this, arg);
- });
- };
-
- /** Asserts that a condition is true.
- * @param {Boolean} test - Condition to test.
- * @param {String} message - Text message for condition being tested.
- */
- djstest.assert = function (test, message) {
-
- QUnit.ok(test, message);
- };
-
- /** Asserts that the values of the expected and actualobjects are equal.
- * @memberof djstest
- * @inner
- */
- djstest.assertAreEqual = function (actual, expected, message) {
- QUnit.equal(actual, expected, message);
- };
-
- /** Asserts that the actual and expected objects are the same.
- */
- djstest.assertAreEqualDeep = function (actual, expected, message) {
- QUnit.deepEqual(exposeDateValues(actual), exposeDateValues(expected), message);
- };
-
- /** Asserts that the actual and expected objects are the same but removes the metadata bevore
- */
- djstest.assertWithoutMetadata = function (actual, expected, message) {
- removeMetadata(actual);
- removeMetadata(expected);
- djstest.assertAreEqualDeep(actual, expected, message);
- };
-
- /** Calls each async action in asyncActions, passing each action a function which keeps a count and
- * calls the passed done function when all async actions complete
- * @param {Array} asyncActions -Array of asynchronous actions to be executed,
- * each taking a single parameter - the callback function to call when the action is done.</param>
- * @param {Function} done - Function to be executed in the last async action to complete.
- */
- djstest.asyncDo = function (asyncActions, done) {
-
- var count = 0;
- var doneOne = function () {
- count++;
- if (count >= asyncActions.length) {
- done();
- }
- };
-
- if (asyncActions.length > 0) {
- for ( var i = 0; i < asyncActions.length; i++) {
- asyncActions[i](doneOne);
- }
- } else {
- done();
- }
- };
-
- /** Makes a deep copy of an object.
- */
- djstest.clone = function (object) {
- if ( object === undefined ) {
- return undefined;
- } else if (object === null) {
- return null;
- } else if (typeof(object) !== 'object') {
- return object;
- } else {
- var ret = {};
- for(var key in object) {
- if(object.hasOwnProperty(key)) {
- ret[key] = this.clone(object[key]);
- }
- }
- return ret;
- }
- throw("Error cloning an object");
- };
-
- /** Destroys the cache and then completes the test
- * @param cache - The cache to destroy
- */
- djstest.destroyCacheAndDone = function (cache) {
-
- cache.clear().then(function () {
- djstest.done();
- }, function (err) {
- djstest.fail("Failed to destroy cache: " + djstest.toString(err));
- djstest.done();
- });
- };
-
- /** Indicates that the currently running test has finished.
- */
- djstest.done = function () {
-
- QUnit.start();
- };
-
- /** Test passes if and only if an exception is thrown.
- */
- djstest.expectException = function (testFunction, message) {
-
- try {
- testFunction();
- djstest.fail("Expected exception but function succeeded: " + " " + message);
- }
- catch (e) {
- // Swallow exception.
- djstest.pass("Thrown exception expected");
- }
- };
-
- /** Indicates the expected number of asserts, fails test if number is not met.
- * @param {Number} asserts - Number of asserts expected in test.
- */
- djstest.assertsExpected = function (asserts) {
-
- expect(asserts);
- };
- /** Marks the current test as failed.
- * @param {String} message - Failure message.
- */
- djstest.fail = function (message) {
-
- QUnit.ok(false, message);
- };
-
- /** Returns a function that when invoked will fail this test and be done with it.
- * @param {String} message - Failure message.
- * @param {Function} [cleanupCallback] -
- * @returns {Function} A new function.
- */
- djstest.failAndDoneCallback = function (message, cleanupCallback) {
-
- return function (err) {
- message = "" + message + (err) ? JSON.stringify(err) : "";
- djstest.fail(message);
- if (cleanupCallback) {
- try {
- cleanupCallback();
- } catch (e) {
- djstest.fail("error during cleanupCallback: " + JSON.stringify(e));
- }
- }
-
- djstest.done();
- };
- };
-
- /** Logs a test message.
- * @param {String} message - Test message.
- */
- djstest.log = function (message) {
-
- var context = { result: true, actual: true, expected: true, message: message };
- QUnit.log(context);
- };
-
- /** Marks the current test as failed.
- * @param {String} message - Failure message.
- */
- djstest.pass = function (message) {
- QUnit.ok(true, message);
- };
-
- /** Dumps the object as a string
- * @param {Object} obj - Object to dump
- */
- djstest.toString = function (obj) {
-
- return QUnit.jsDump.parse(obj);
- };
-
- /** Executes the function, pausing test execution until the callback is called
- * @param {Function} fn - Function to execute; takes one parameter which is the callback
- * This function is typically used in asynchronous setup/teardown methods</remarks>
- */
- djstest.wait = function (fn) {
- QUnit.stop();
- fn(function () {
- QUnit.start();
- });
- };
-
- return djstest;
-};
-
-//export djstest
-
-if (typeof window !== 'undefined') {
- //expose to browsers window object
- if ( window.djstest === undefined) {
- window.djstest = init();
- } else {
- var tmp = init();
- $.extend( window.djstest,tmp);
- }
-} else {
- //expose in commonjs style
- module.exports = init();
-}
-
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/mockHttpClient.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/mockHttpClient.js b/odatajs/tests/common/mockHttpClient.js
deleted file mode 100644
index f5b2bd0..0000000
--- a/odatajs/tests/common/mockHttpClient.js
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-//mockHttpClient.js
-//this object allows for associating a uri with a requestVerfier and mock responses that will be sent back to the client of the httpStack.
-//It can be used to replace OData's httpClient for testing purposes.
-//
-//RequestVerifiers
-//
-// A request verifier is a function associated to a particular URI that will be executed by the mockHttpClient when it receives a request with the matching URI.
-// the callback receives as its only parameter the request object passed to the mockHttpClient.
-//
-// To register a request verifier, simply do
-//
-// MockHttpClient.addRequestVerifier("http://someUri", function(request) {
-// djstest.assertAreEqual(request.requestUri,"http://someUri");
-// }
-//
-//Responses
-// Mock responses can be associated with a particular URI. When the MockHttpClient receives a request with a URI mapped to a response, then it will,
-// depending on the response status code invoke either the success or the error callbacks.
-//
-// To register a response,
-//
-// MockHttpClient.addResponse("http://someUri", {status: 200, body:"some body"});
-//
-//Exceptions
-// MockHttpClient will throw an exception if it receives a request to a URI that is not mapped to either a request verifier or a response.
-//
-
-function init(window, undefined) {
-
- var httpClient = {};
-
- var responses = {};
- var requestVerifiers = {};
-
- httpClient.addRequestVerifier = function (uri, verifier) {
- requestVerifiers[uri] = verifier;
- return this;
- };
-
- httpClient.addResponse = function (uri, response) {
- responses[uri] = response;
- return this;
- };
-
- httpClient.async = false;
-
- httpClient.clear = function () {
- /** Clears all registered responses and verifiers.
- * @returns this client
- */
- responses = {};
- requestVerifiers = {};
- this.async = false;
- return this;
- };
-
- httpClient.request = function (request, success, error) {
- var uri = request.requestUri;
- var verifier = requestVerifiers[uri];
- var response = responses[uri];
-
- if (verifier === undefined) {
- verifier = requestVerifiers["*"];
- }
-
- if (response === undefined) {
- response = responses["*"];
- }
-
- if (!verifier && !response) {
- throw { message: "neither verifier or response defined for uri: " + uri };
- }
-
- if (verifier) {
- verifier(request);
- }
-
- if (response) {
- response.requestUri = uri;
- if (response.statusCode >= 200 && response.statusCode <= 299) {
- if (this.async) {
- setTimeout(function () {
- success(response);
- });
- } else {
- success(response);
- }
- } else {
- if (this.async) {
- setTimeout(function () {
- error({ message: "failed test response", request: request, response: response });
- });
- }
- else {
- error({ message: "failed test response", request: request, response: response });
- }
- }
- }
- };
-
- httpClient.setAsync = function (value) {
- this.async = value;
- return this;
- };
-
- return httpClient;
-}
-
-
-
-if (typeof window !== 'undefined') {
- //in browser call init() directly window as context
- window.MockHttpClient = init(window);
-} else {
- //expose function init to be called with a custom context
- module.exports.init = init;
-}
-
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/mockXMLHttpRequest.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/mockXMLHttpRequest.js b/odatajs/tests/common/mockXMLHttpRequest.js
deleted file mode 100644
index fdd6026..0000000
--- a/odatajs/tests/common/mockXMLHttpRequest.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
- // mockXMLHttpRequest.js
-//
-// This file provides a window.MockXMLHttpRequest object that can be used
-// to replace or wrap the browser's XMLHttpRequest object for testing.
-//
-// Typically the object is installed, a test run, and then the original
-// object restored. The addResponse and addRequest verifier can be
-// used to set up callbacks; reset is used to clear those values.
-//
-// For a sample demonstrating how to use this functionality, see
-// the httpClientSendRequestTest test in odata-net-tests.js.
-
-(function (window, undefined) {
-
- if (!window.MockXMLHttpRequest) {
- window.MockXMLHttpRequest = {};
- }
-
- var mockXMLHttpRequest = window.MockXMLHttpRequest;
-
- var responses = {};
- var verifiers = {};
-
- mockXMLHttpRequest.addResponse = function (uri, response) {
- /** Adds a new response to be returned for the specified uri (* for 'anything').
- * @param {String} uri - URI to match (* to match anything not otherwise specified).
- * @param {Object} response - Response object.
- */
- responses = responses || {};
- responses[uri] = response;
-
- return this;
- };
-
- mockXMLHttpRequest.addRequestVerifier = function (uri, verifier) {
- /** Adds a new request verifier to be invoked for the specified uri (* for 'anything').
- * @param {String} uri - URI to match (* to match anything not otherwise specified).
- * @param {Function} response - Verifier callback that takes the request.
- */
- verifiers = verifiers || {};
- verifiers[uri] = verifier;
-
- return this;
- };
-
- mockXMLHttpRequest.reset = function () {
- /** Resets all configuration from the mock XHR object.
- */
-
- responses = {};
- verifiers = {};
-
- mockXMLHttpRequest.onCreate = undefined;
- mockXMLHttpRequest.onAfterSend = undefined;
-
- return this;
- };
-
- var xmlHttpRequest = function () {
- //properties
- this.readyState = 0;
- this.responseXML = undefined;
-
- //events
- this.ontimeout = undefined;
- this.onreadystatechange = undefined;
-
- if (mockXMLHttpRequest.onCreate) {
- mockXMLHttpRequest.onCreate(this);
- }
- };
-
- xmlHttpRequest.prototype.open = function (method, url, async, user, password) {
- if (!method) {
- throw { method: "method parameter is not defined, empty, or null " };
- }
- if (!url) {
- throw { message: "url parameter is not defined, empty, or null " };
- }
-
- this._request = {
- headers: {},
- url: url,
- method: method,
- async: async,
- user: user,
- password: password
- };
- };
-
- xmlHttpRequest.prototype.getAllResponseHeaders = function () {
- if (!this._response) {
- throw { message: "_response property is undefined, did you forget to call send() or map the request url to a response?" };
- }
-
- var result = "";
- var header;
- for (header in this._response.headers) {
- result = result + header + ": " + this._response.headers[header] + "\n\r";
- }
- //remove trailing LFCR
- return result.substring(0, result.length - 2);
- };
-
- xmlHttpRequest.prototype.getResponseHeader = function (header) {
- if (!this._response) {
- throw { message: "_response property is undefined, did you forget to call send() or map the request url to a response?" };
- }
- return this._response.headers[header];
- };
-
- xmlHttpRequest.prototype.abort = function () {
- //do nothing for now.
- };
-
- xmlHttpRequest.prototype.setRequestHeader = function (header, value) {
- if (!this._request) {
- throw { message: "_request property is undefined, did you forget to call open() first?" };
- }
- this._request.headers[header] = value;
- };
-
- xmlHttpRequest.prototype.send = function (data) {
- if (!this._request) {
- throw { message: "_request property is undefined, did you forget to call open() first?" };
- }
-
- if (this._request.headers["MockNoOp"]) {
- return;
- }
-
- if (this._request.headers["MockTimeOut"]) {
- if (!this.timeout) {
- throw { message: "timeout property is not set" };
- }
-
- if (this.ontimeout) {
- (function (xhr) {
- setTimeout(function () {
- xhr.ontimeout();
- }, xhr.timeout);
- })(this);
- }
- return;
- }
-
- var url = this._request.url;
- var verifier = verifiers[url];
- var response = responses[url];
-
- if (!verifier) {
- verifier = verifiers["*"];
- }
-
- if (!response) {
- response = responses["*"];
- }
-
- if (!verifier && !response) {
- throw { message: "neither verifier or response defined for url: " + url };
- }
-
- this._request.body = data;
-
- if (verifier) {
- verifier(this._request);
- }
-
- if (response) {
- // Execute the respone after a 30ms delay.
- this._response = response;
- sendResponseDelay(this, response, 60);
- }
- };
-
- var sendResponseDelay = function (xhr, response, delay) {
- setTimeout(function () {
- xhr.status = response.status;
- xhr.responseText = response.body;
- xhr.responseBody = response.body;
-
- xhr.readyState = 4;
- if (xhr.onreadystatechange) {
- xhr.onreadystatechange();
- if (mockXMLHttpRequest.onAfterSend) {
- mockXMLHttpRequest.onAfterSend();
- }
- }
- }, delay);
- };
-
- mockXMLHttpRequest.XMLHttpRequest = xmlHttpRequest;
-
-})(this);
http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/503b4417/odatajs/tests/common/odataVerifyReader.js
----------------------------------------------------------------------
diff --git a/odatajs/tests/common/odataVerifyReader.js b/odatajs/tests/common/odataVerifyReader.js
deleted file mode 100644
index bad1e51..0000000
--- a/odatajs/tests/common/odataVerifyReader.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-// Client for the odata.read verifier service
-
-(function (window, undefined) {
- var jsonMime = "application/json";
- var universalMime = "*/*";
-
- var readFeed = function (url, success, mimeType, recognizeDates) {
- /** Calls the ReadFeed endpoint with the specified URL
- * @param {String} url - The URL to read the feed from
- * @param {Function} success - The success callback function
- * @param {String} mimeType - The MIME media type in the Accept header
- */
- var readMethod = getReadMethod(mimeType);
- verifyRequest("GET", readMethod, typeof url === "string" ? { url: url} : url, mimeType, recognizeDates, function (data) {
- success(data);
- });
- };
-
- var readEntry = function (url, success, mimeType, recognizeDates) {
- /** Calls the ReadEntry endpoint with the specified URL
- * @param {String} url - The URL to read the entry from
- * @param {Function} success - The success callback function
- * @param {String} mimeType - The MIME media type in the Accept header
- */
- var readMethod = getReadMethod(mimeType);
- verifyRequest("GET", readMethod, typeof url === "string" ? { url: url} : url, mimeType, recognizeDates, success);
- };
-
- var readLinksEntry = function (url, success) {
- /** Calls the ReadMetadata endpoint with the specified URL
- * @param {String} url - The URL to read the metadata from
- * @param {Function} success - The success callback function
- */
- readJson(
- url,
- success
- );
- };
-
- var readLinksFeed = function (url, success) {
- /** Calls the ReadMetadata endpoint with the specified URL
- * @param {String} url - The URL to read the metadata from
- * @param {Function} success - The success callback function
- */
- readJson(
- url,
- function (data) {
- success(data);
- }
- );
- };
-
- var readMetadata = function (url, success) {
- /** Calls the ReadMetadata endpoint with the specified URL
- * @param {String} url - The URL to read the metadata from
- * @param {Function} success - The success callback function
- */
- verifyRequest("GET", "ReadMetadata", typeof url === "string" ? { url: url} : url, null, null, success);
- };
-
- var readServiceDocument = function (url, success, mimeType) {
- /** Calls the ReadServiceDocument endpoint with the specified URL
- * @param {String} url - The URL to the service
- * @param {Function} success - The success callback function
- * @param {String} mimeType - The MIME type being tested
- */
- var readMethod = getReadMethod(mimeType);
- verifyRequest("GET", readMethod, typeof url === "string" ? { url: url} : url, mimeType, null, success);
- };
-
- var readJson = function (url, success) {
- $.ajax({
- url: url,
- accepts: null,
- dataType: "json",
- beforeSend: function (xhr) {
- xhr.setRequestHeader("Accept", jsonMime);
- xhr.setRequestHeader("OData-MaxVersion", "4.0");
- },
- success: function (data) {
- success(data);
- }
- });
- };
-
- var readJsonAcrossServerPages = function (url, success) {
- var data = {};
- var readPage = function (url) {
- readJson(url, function (feedData) {
- var nextLink = feedData["@odata.nextLink"];
- if (nextLink) {
- var index = url.indexOf(".svc/", 0);
- if (index != -1) {
- nextLink = url.substring(0, index + 5) + nextLink;
- }
- }
-
- if (data.value && feedData.value) {
- data.value = data.value.concat(feedData.value);
- }
- else {
- for (var property in feedData) {
- if (property != "@odata.nextLink") {
- data[property] = feedData[property];
- }
- }
- }
-
- if (nextLink) {
- readPage(nextLink);
- }
- else {
- success(data);
- }
- });
- };
-
- readPage(url);
- };
-
- var getReadMethod = function (mimeType) {
- switch (mimeType) {
- case jsonMime:
- case universalMime:
- default:
- return "ReadJson";
- }
- };
-
- var verifyRequest = function (method, endpoint, data, mimeType, recognizeDates, success) {
- /** Requests a JSON object from the verifier service, removing WCF-specific artifacts
- * @param {String} method - The HTTP method (GET or POST)
- * @param {String} endpoint - The verifier endpoint
- * @param {Object} data - The data to send with the request
- * @param {Function} reviver - The reviver function to run on each deserialized object
- * @param {Function} success - Success callback
- */
- var url = "./common/ODataVerifyReader.svc/" + endpoint;
- if (mimeType) {
- data.mimeType = mimeType;
- }
-
- $.ajax({
- type: method,
- url: url,
- data: data,
- dataType: "text",
- success: function (data) {
- var json = JSON.parse(data);
- success(json);
- }
- });
- };
-
- var removeProperty = function (data, property) {
- /** Removes the specified property recursively from the given object
- * @param {Object} data - The object to operate on
- * @param {String} property - The name of the property to remove
- */
- if (typeof data === "object" && data !== null) {
- if (data[property]) {
- delete data[property];
- }
-
- for (prop in data) {
- removeProperty(data[prop], property);
- }
- }
- };
-
- window.ODataVerifyReader = {
- readFeed: readFeed,
- readEntry: readEntry,
- readLinksEntry: readLinksEntry,
- readLinksFeed: readLinksFeed,
- readJson: readJson,
- readJsonAcrossServerPages: readJsonAcrossServerPages,
- readMetadata: readMetadata,
- readServiceDocument: readServiceDocument
- };
-})(window);
\ No newline at end of file