public void NestedChildTables()
        {
            var tables = TestSets.Countries(1000, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Key("VisitId", s => s.Current <IVisitAggregationContext>().Visit.InteractionId)
                                            .Fact("Value", s => s.Current <IVisitAggregationContext>().Visit.Value)
                                            .Map(s => s.Current <IVisitAggregationContext>().Visit.Pages,
                                                 new TableDefinition("Pages")
                                                 .Key("Id", s => s.Current <PageData>().Item.Id)
                                                 .Fact("Value", s => s.Current <PageData>().PageEvents.Sum(pe => pe.Value))
                                                 .Map(s => s.Current <PageData>().PageEvents,
                                                      new TableDefinition("Events")
                                                      .Dimension("Event", s => s.Current <PageEventData>().PageEventDefinitionId)
                                                      .Fact("Value", s => s.Current <PageEventData>().Value)))
                                            .Map(s => new[] { s.Current <IVisitAggregationContext>().Visit.Pages.First() },
                                                 new TableDefinition("Pages2")
                                                 .Key("Id", s => s.Current <PageData>().Item.Id))));

            var visits = tables.FirstOrDefault(t => t.Schema.Name == "Test");
            var pages  = tables.FirstOrDefault(t => t.Schema.Name == "Pages");
            var pages2 = tables.FirstOrDefault(t => t.Schema.Name == "Pages2");
            var events = tables.FirstOrDefault(t => t.Schema.Name == "Events");


            Assert.AreEqual(1000, visits.Rows.Count());
            Assert.AreEqual(14000, visits.Fields <int>("Value").Sum());
            Assert.AreEqual(14000, pages.Fields <int>("Value").Sum());
            Assert.AreEqual(14000, events.Fields <int>("Value").Sum());

            Assert.AreEqual(3000, pages.Rows.Count());
            Assert.AreEqual(3000, events.Rows.Count());
            Assert.AreEqual(1000, pages2.Rows.Count());
        }
Example #2
0
        public void UUTCOCommandTest()
        {
            TestSets testCollections = Hydrator.Hydrate("CO Command Test", COCommandXML);

            ResponseProcessor.BindEvents(testCollections["Bootup"], Assembly.GetAssembly(typeof(TruePosition.Test.Custom.CSharp.CustomCommandEvents)));
            //ResponseProcessor.BindEvents(testCollections["Bootup"], Assembly.LoadFile(@"C:\Development\Kapsoft\True Position\Test Components\Output\Out.dll"));

            QFManager.Port.Create(PortType.Serial, "COM1");
            QFManager.Port.Receive("COM1", port_DataReceived);
            QFManager.Port.Error("COM1", port_Error);
            QFManager.Port.ReceiveTimeout("COM1", port_ReceiveTimeoutExpired);
            QFManager.Port.Open("COM1");

            Test test = testCollections["Bootup"]["1A"];

            QFManager.Test.Load(test, UUTTestMode.Direct);
            QFManager.Test.Stepping(test.Name, test_Stepping);
            QFManager.Test.TestStepped(test.Name, test_Stepped);
            QFManager.Test.Passed(test.Name, test_Passed);
            QFManager.Test.Failed(test.Name, test_Failed);

            QFManager.UUT.Load("LMU1", @"..\..\..\Documents\\UUT CO Response.xml", test, UUTTestMode.Direct);
            QFManager.UUT.Failed("LMU1", uut_Failed);
            QFManager.UUT.Passed("LMU1", uut_Passed);

            QFManager.UUT.Run("LMU1");
            QFManager.Test.Run(test.Name);

            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
        }
Example #3
0
        public void HydrateTest()
        {
            string   name   = "Bootup";
            TestSets actual = Hydrator.Hydrate(name, convertedXMLFilePath);

            Assert.IsNotNull(actual);
        }
Example #4
0
        public void UUTBootup1ETest()
        {
            TestSets testCollections = Hydrator.Hydrate("Bootup Tests", TestBootup1EXML);

            QFManager.Port.Create(PortType.Serial, "COM1");
            QFManager.Port.Receive("COM1", port_DataReceived);
            QFManager.Port.Error("COM1", port_Error);
            QFManager.Port.ReceiveTimeout("COM1", port_ReceiveTimeoutExpired);
            QFManager.Port.Open("COM1");

            Test test = testCollections["Bootup"]["1E"];

            QFManager.Test.Load(test, UUTTestMode.Direct);
            QFManager.Test.Stepping(test.Name, test_Stepping);
            QFManager.Test.TestStepped(test.Name, test_Stepped);
            QFManager.Test.Passed(test.Name, test_Passed);
            QFManager.Test.Failed(test.Name, test_Failed);
            QFManager.Test.Aborted(test.Name, test_Aborted);

            //QFManager.Test.Abort(test.Name, "Abort before we even got started.");
            //System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

            QFManager.UUT.Load("LMU1", @"..\..\..\Documents\\UUT Bootup-1E Responses.xml", test, UUTTestMode.Direct);
            QFManager.UUT.Failed("LMU1", uut_Failed);
            QFManager.UUT.Passed("LMU1", uut_Passed);

            QFManager.UUT.Run("LMU1");
            QFManager.Test.Run(test.Name);

            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

            //System.Threading.Thread.Sleep(1000);
            //QFManager.Test.Abort(test.Name, "Because I wanted to. That's why...");
        }
        /// <summary>
        /// finds all folders in the TestSet list, scans their tree and adds all sets under the given folders
        /// updates the TestSets by expanding the folders, and removing them, so only Test sets remain in the collection
        /// </summary>
        private void FindAllTestSetsUnderFolders()
        {
            List <string> extraSetsList  = new List <string>();
            List <string> removeSetsList = new List <string>();
            var           tsTreeManager  = (ITestSetTreeManager)tdConnection.TestSetTreeManager;

            //go over all the testsets / testSetFolders and check which is which
            foreach (string testsetOrFolder in TestSets)
            {
                //try getting the folder
                ITestSetFolder tsFolder = GetFolder("Root\\" + testsetOrFolder.TrimEnd("\\".ToCharArray()));

                //if it exists it's a folder and should be traversed to find all sets
                if (tsFolder != null)
                {
                    removeSetsList.Add(testsetOrFolder);

                    List <string> setList = GetAllTestSetsFromDirTree(tsFolder);
                    extraSetsList.AddRange(setList);
                }
            }

            TestSets.RemoveAll((a) => removeSetsList.Contains(a));
            TestSets.AddRange(extraSetsList);
        }
Example #6
0
        public void LookupInLookup()
        {
            var tables = TestSets.Countries(1000, 9).Process(() =>
                                                             new TableDefinition("Test")
                                                             .Dimension("VisitId", scope => scope.Current <IVisitAggregationContext>().Visit.InteractionId)
                                                             .Map(new FieldMapperSet("Country", false, new IFieldMapper[]
            {
                new SimpleFieldMapper("Country",
                                      scope => scope.Current <IVisitAggregationContext>().Visit.GeoData.Country, typeof(string),
                                      FieldType.Dimension),
                new FieldMapperSet("Country2", false, new []
                {
                    new SimpleFieldMapper("Country",
                                          scope => scope.Current <IVisitAggregationContext>().Visit.GeoData.Country, typeof(string),
                                          FieldType.Dimension),
                    new SimpleFieldMapper("Count", s => 1, typeof(int), FieldType.Fact),
                }),
            }))
                                                             );

            var visits     = tables.FirstOrDefault(t => t.Schema.Name == "Test");
            var countries  = tables.FirstOrDefault(t => t.Schema.Name == "Country");
            var countries2 = tables.FirstOrDefault(t => t.Schema.Name == "Country2");

            Assert.AreEqual(1000, visits.Rows.Count());
            Assert.AreEqual(9, countries.Rows.Count());
            Assert.AreEqual(9, countries2.Rows.Count());
            Assert.AreEqual(9, visits.Fields <long>("CountryId").Distinct().Count());
            Assert.AreEqual(9, countries.Fields <long>("Country2Id").Distinct().Count());
            Assert.AreEqual(1000, countries2.Fields <int>("Count").Sum());
        }
        public void RowPerVisitHashKey()
        {
            var table = TestSets.Countries(1000, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Dimension("VisitId", s => s.Current <IVisitAggregationContext>().Visit.InteractionId))).FirstOrDefault();

            Assert.AreEqual(1000, table.Rows.Count());
        }
        public void Count()
        {
            var table = TestSets.Countries(1000, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Count())).FirstOrDefault();

            Assert.AreEqual(1000, table.Field <int>("Count", table.Rows.First()));
        }
        public void FactAggregation()
        {
            var table = TestSets.Countries(1000, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Key("VisitId", s => s.Current <IVisitAggregationContext>().Visit.InteractionId)
                                            .Fact("Value", s => s.Current <IVisitAggregationContext>().Visit.Value))).FirstOrDefault();

            Assert.AreEqual(1000, table.Rows.Count());
            Assert.AreEqual(14000, table.Fields <int>("Value").Sum());
        }
Example #10
0
        public void TempuratureResponseTest()
        {
            XElement exerpt = XElement.Parse("<TestSets>" +
                                             "<TestSet Name=\"Bootup\">" +
                                             "<Test Type=\"Bootup\" Name=\"1A\">" +
                                             "<Step Type=\"Bootup\">" +
                                             "<Command>pro</Command>" +
                                             "<Response Delimiter=\"&#xA;\">" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'TEMPERATURES:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<KeyExpression>value like '*recvr*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 70</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "<Expected Trim=\"true\"> Trim=\"true\"" +
                                             "<KeyExpression>value like '*bdc*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 28</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "<Expected Trim=\"true\">" +
                                             "<KeyExpression>value like '*power supply*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 35</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "</Response>" +
                                             "<Timeout>180</Timeout>" +
                                             "<BeginState>BOOT</BeginState>" +
                                             "<EndState>DSHELL</EndState>" +
                                             "<Retries>0</Retries>" +
                                             "</Step>" +
                                             "</Test>" +
                                             "</TestSet>" +
                                             "</TestSets>");

            TestSets collections = Hydrator.Hydrate("Test", exerpt);

            ResponseProcessor.Process("First Test", collections["Bootup"]["1A"].Steps[0], "TEMPERATURES: recvr 31 bdc 28 power supply 35");
        }
        public void CountSum()
        {
            var table = TestSets.Countries(1000, 5).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Key("Country", s => s.Current <IVisitAggregationContext>().Visit.GeoData.Country)
                                            .Count())).FirstOrDefault();

            var rows = table.Rows.ToList();

            Assert.AreEqual(5, rows.Count);
            Assert.AreEqual(1000, table.Fields <int>("Count").Sum());
        }
        public ActionResult UploadTest(UploadTestViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (var context = new Entities())
            {
                if (context.TestSets.FirstOrDefault(x => x.Name.ToLower()
                                                    == model.TestName) != null)
                {
                    ModelState.AddModelError("TestName",
                                             "This test set name is already taken.");
                    return(View(model));
                }

                byte[] array;
                var    contentType     = model.file.ContentType;
                var    expectedResults = new StringBuilder();

                using (MemoryStream ms = new MemoryStream())
                {
                    model.file.InputStream.CopyTo(ms);
                    array = ms.GetBuffer();
                    ms.Seek(0, SeekOrigin.Begin);

                    var formatChecker = new FormatChecker();
                    expectedResults = formatChecker.GetExpectedValuesFromTestSet(ms);
                }

                var fileSize = model.file.ContentLength / 1024;
                var testSet  = new TestSets
                {
                    CreatorId = context.Users.FirstOrDefault <Users>
                                    (x => x.UserName.ToLower() == User.Identity.Name.ToLower()).Id,
                    TotalRuns       = 0,
                    DateOfCreation  = DateTime.Now,
                    Description     = model.Description,
                    Data            = array,
                    Name            = model.TestName,
                    Size            = fileSize,
                    ExpectedResults = expectedResults.ToString().TrimStart().TrimEnd()
                };

                context.TestSets.Add(testSet);

                context.SaveChanges();
            }

            return(RedirectToAction("TestSets", "Testing"));
        }
Example #13
0
        static void Main(string[] args)
        {
            try
            {
                Console.Title = "Redis Features Showcase";
                Redis         = Common.Redis.InitializeConnection(ConfigurationManager.AppSettings["Redis.Password"]);

                Console.WriteLine("Pick one:");
                Console.WriteLine("  1 - Numbers");
                Console.WriteLine("  2 - Floats, Ints");
                Console.WriteLine("  3 - Bitmaps");
                Console.WriteLine("  4 - Sets");
                Console.WriteLine("  5 - Sorted Sets (simple)");
                Console.WriteLine("  6 - Sorted Sets (airports)");
                Console.WriteLine("  7 - Transactions");
                Console.WriteLine("  8 - Hashes");
                Console.WriteLine();
                Console.Write("> ");

                while (true)
                {
                    switch (Console.ReadKey(true).KeyChar)
                    {
                    case '1': TestNumbers.Execute(Redis); return;

                    case '2': TestFloatsInts.Execute(Redis); return;

                    case '3': TestBitmaps.Execute(Redis); return;

                    case '4': TestSets.Execute(Redis); return;

                    case '5': TestSortedSimple.Execute(Redis); return;

                    case '6': TestSortedSets.Execute(Redis); return;

                    case '7': TestTransactions.Execute(Redis); return;

                    case '8': TestHash.Execute(Redis); return;

                    default: break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                Console.Write("<ENTER> ");
                Console.ReadLine();
            }
        }
Example #14
0
 public PSO(double Omega, double OmegaLocal, double OmegaGlobal, int ParticleCount, TestSets set, 
     Machine Base, int MaxStates=15, double DeathChance=0.003, int ProgressCount = 5)
 {
     this.ProgressCount = ProgressCount;
     this.DeathChance = DeathChance;
     this.Base = Base;
     machine2 = GenerateMachineRepresentation(Base);
     this.particleCount = ParticleCount;
     InitializeComponent();
     TestCount = set.TrainingSet.Count;
     DataContext = this;
     this.set = set;
     MachinePSO.Initialize(set.TrainingSet.Keys.ToList(), (w1, w2) => (set.TrainingSet[new Tuple<int[], int[]>(w1, w2)]), MaxStates, Base.alphabet, set.AllWords);
     MachinePSO.InputParameters(Omega, OmegaLocal, OmegaGlobal);
 }
        public TestSets PostTestSet(TestSets testSets)
        {
            var client = new RestClient(conFIG.QACompleteEndPoint + "v1/projects/{projectID}/TestSets");

            var request = new RestRequest(Method.POST);

            request.AddUrlSegment("projectID", Project);
            request.AddJsonBody(testSets);
            request.AddHeader("Authorization", Auth);
            request.AddHeader("Content-Type", "application/json");

            var    response = client.Execute(request);
            string L        = response.Content;


            return(JsonConvert.DeserializeObject <QACDataModel.TestSets>(L));
        }
        public TestSummary[] SplitByAsset()
        {
            //this function is useful to split out results by asset for asset specific analysis

            List <TestSummary> grouped = new List <TestSummary>();

            //get all the asset names that exist in the test sets.
            string[] assets = TestSets.Select(x => x.Asset).Distinct().ToArray();

            //a new test summary object will be created for every asset containing only the test sets that relate to that asset
            foreach (string asset in assets)
            {
                //creaet a new test summary with test sets filtered by the asset name
                grouped.Add(new TestSummary(this, asset));
            }

            return(grouped.ToArray());
        }
Example #17
0
        public void Splitter()
        {
            var splitter = new PageConditionSplitter((scope, page) => page.VisitPageIndex == 2);

            var table = TestSets.Countries(1000, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Key("VisitId", s => s.Current <IVisitAggregationContext>().Visit.InteractionId)
                                            .Map(new SplittingFieldMapper(splitter, (name) =>
                                                                          new[] {
                new SimpleFieldMapper("Value" + name,
                                      s =>
                                      s.Current <IVisitAggregationContext>()
                                      .Visit.Value, typeof(int), FieldType.Fact)
            })))).FirstOrDefault();

            Assert.AreEqual(1000, table.Rows.Count());
            Assert.AreEqual(5000, table.Fields <int>("ValueBefore").Sum());
            Assert.AreEqual(9000, table.Fields <int>("ValueAfter").Sum());
            Assert.AreEqual(14000, table.Fields <int>("ValueTotal").Sum());
        }
Example #18
0
        public void ActiveTestTest()
        {
            TestSets testCollections = Hydrator.Hydrate("CO Command Test", COCommandXML);

            ResponseProcessor.BindEvents(testCollections["Bootup"], Assembly.GetAssembly(typeof(TruePosition.Test.Custom.CSharp.CustomCommandEvents)));

            QFManager.Port.Create(PortType.Serial, "COM1");
            QFManager.Port.Receive("COM1", port_DataReceived);
            QFManager.Port.Error("COM1", port_Error);
            QFManager.Port.ReceiveTimeout("COM1", port_ReceiveTimeoutExpired);
            QFManager.Port.Open("COM1");

            Test test = testCollections["Bootup"]["1A"];

            QFManager.Test.Load(test);
            QFManager.Test.Failed(test.Name, test_Failed);
            QFManager.Test.Passed(test.Name, test_Passed);
            QFManager.Test.Run(test.Name);

            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
        }
Example #19
0
        public void TwoFieldInlineLookup()
        {
            var tables = TestSets.Countries(1000, 9, regionsPerCountry: 3).Process(() =>
                                                                                   new TableDefinition("Test")
                                                                                   .Dimension("VisitId", scope => scope.Current <IVisitAggregationContext>().Visit.InteractionId)
                                                                                   .Map(new FieldMapperSet("Country", true, new[]
            {
                new SimpleFieldMapper("Country",
                                      scope => scope.Current <IVisitAggregationContext>().Visit.GeoData.Country, typeof(string),
                                      FieldType.Dimension),
                new SimpleFieldMapper("Region",
                                      scope => scope.Current <IVisitAggregationContext>().Visit.GeoData.Region, typeof(string),
                                      FieldType.Dimension),
            }))
                                                                                   );

            Assert.AreEqual(1, tables.Count());
            var visits = tables.FirstOrDefault(t => t.Schema.Name == "Test");

            Assert.AreEqual(1000, visits.Rows.Count());
            Assert.AreEqual(9, visits.Fields <string>("Country").Distinct().Count());
            Assert.AreEqual(27, visits.Fields <string>("Region").Distinct().Count());
        }
Example #20
0
        public void COResponseFileTest()
        {
            TestSets testCollections = Hydrator.Hydrate("CO Command Test", COCommandXML);

            ResponseProcessor.BindEvents(testCollections["Bootup"], Assembly.GetAssembly(typeof(TruePosition.Test.Custom.CSharp.CustomCommandEvents))); //Assembly.GetAssembly(typeof(TruePosition.Test.Custom.CSharp.CustomCommandEvents)));

            ResponseProcessor.Process("1A", testCollections["Bootup"]["1A"].Steps[0], "ESN: " + "\n" +
                                      "GBE_CTLR:     NOT INSTALLED            " + "\n" +
                                      "GBE_LNA:      NOT INSTALLED            " + "\n" +
                                      "GBE:          NOT INSTALLED            " + "\n" +
                                      "GBE CUST ESN: NOT INSTALLED            " + "\n" +
                                      "LMU:          06162200D010082006501DA6 " + "\n" +
                                      "GPS RCVR:     06162200D010082006501DA6 " + "\n" +
                                      "RECEIVER:     06163900B0100820070403C2 " + "\n" +
                                      "BDC:          06164000C11008200704063B " + "\n" +
                                      "PSUPPLY:      06163400G0100820064300C1 " + "\n" +
                                      "CP/DSP:       06164100B1100820064700C2 " + "\n" +
                                      "DCARD:        06160301B010082006440005 " + "\n" +
                                      "EBOARD:       NOT INSTALLED            " + "\n" +
                                      "CUSTESN:      TRULMU5207872AE          " + "\n" +
                                      "TEMPERATURES: recvr 31 bdc 28 power supply 35" + "\n" +
                                      "TPESN:        06630000D010082007050130");
        }
Example #21
0
 private void GenerateTests()
 {
     if (ValidatedParameters)
     {
         Set = new TestSets(Automaton, thorough, random, control);
     }
     else
     {
         Set = new TestSets(Automaton);
     }
 }
Example #22
0
        public void COResponseStepTest()
        {
            XElement exerpt = XElement.Parse("<TestSets>" +
                                             "<TestSet Name=\"Bootup\">" +
                                             "<Test Type=\"Bootup\" Name=\"1A\">" +
                                             "<Step Type=\"Bootup\">" +
                                             "<Command>pro</Command>" +
                                             "<Response Delimiter=\"&#xA;\">" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'GPS RCVR:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Expression>value validesn</Expression>" +
                                             "<Expression>value not same</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage></FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'RECEIVER:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value len 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage></FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'BDC:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'PSUPPLY:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'TEMPERATURES:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<KeyExpression>value like '*recvr*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 31</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "<Expected Trim=\"true\">" +
                                             "<KeyExpression>value like '*bdc*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 28</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>BDC Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "<Expected Trim=\"true\">" +
                                             "<KeyExpression>value like '*power supply*'</KeyExpression>" +
                                             "<Expression>value &gt;= -10</Expression>" +
                                             "<Expression>value &lt;= 35</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Power supply Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'CP/DSP:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value len 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'DCARD:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Expression>value validesn</Expression>" +
                                             "<Expression>value not same</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'EBOARD:*'</KeyExpression>" +
                                             "<Expected Trim=\"false\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'CUSTESN:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 15</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "<Element>" +
                                             "<KeyExpression>value like 'TPESN:*'</KeyExpression>" +
                                             "<Expected Trim=\"true\">" +
                                             "<Expression>value lenge 24</Expression>" +
                                             "<Destination>" +
                                             "<Name></Name>" +
                                             "<Default></Default>" +
                                             "</Destination>" +
                                             "<FailureMessage>Receiver Temperature outside limits</FailureMessage>" +
                                             "</Expected>" +
                                             "</Element>" +
                                             "</Response>" +
                                             "<Timeout>180</Timeout>" +
                                             "<BeginState>BOOT</BeginState>" +
                                             "<EndState>DSHELL</EndState>" +
                                             "<Retries>0</Retries>" +
                                             "</Step>" +
                                             "</Test>" +
                                             "</TestSet>" +
                                             "</TestSets>");

            TestSets collections = Hydrator.Hydrate("Test", exerpt);

            ResponseProcessor.Process("First Test", collections["Bootup"]["1A"].Steps[0], "ESN: " + "\n" +
                                      "GBE_CTLR:     NOT INSTALLED            " + "\n" +
                                      "GBE_LNA:      NOT INSTALLED            " + "\n" +
                                      "GBE:          NOT INSTALLED            " + "\n" +
                                      "GBE CUST ESN: NOT INSTALLED            " + "\n" +
                                      "GPS RCVR:     06162200D010082006501DA6 " + "\n" +
                                      "RECEIVER:     06163900B0100820070403C2 " + "\n" +
                                      "BDC:          06164000C11008200704063B " + "\n" +
                                      "PSUPPLY:      06163400G0100820064300C1 " + "\n" +
                                      "CP/DSP:       06164100B1100820064700C2 " + "\n" +
                                      "DCARD:        06160301B010082006440005 " + "\n" +
                                      "EBOARD:       NOT INSTALLED            " + "\n" +
                                      "CUSTESN:      TRULMU5207872AE          " + "\n" +
                                      "TEMPERATURES: recvr 31 bdc 28 power supply 35" + "\n" +
                                      "TPESN:        06630000D010082007050130");

            //element.Save(@"C:\Development\Kapsoft\True Position\Documents\COCommandTest.xml");
        }
Example #23
0
 private bool CreateTests()
 {
     var D = new TestRunner(Automaton);
     var b = D.ShowDialog();
     if (b.HasValue && b.Value)
     {
         Set = D.Set;
         return true;
     }
     return false;
 }
        public void NestedChildTablesWithBatchingInCsv()
        {
            var csvDir = Path.Combine(Directory.GetCurrentDirectory(), "~tmp");

            if (Directory.Exists(csvDir))
            {
                Directory.Delete(csvDir, true);
            }

            var csv = new CsvExporter(csvDir, binaryPartitions: true);

            var batchWriter = new TableDataBatchWriter(csv);

            //1000 visits.
            //1 row in Test per visit
            //3 rows in Events per visit
            //3 rows in Pages per visit
            //1 row in Pages2 per visit
            //--------------------------
            //8 rows per visit = 80000 in total

            //Batch size 26672 (ceiling(1000/3) visits) gives two disk partitions with 26672 and one with 26656 in memory

            var visitCount             = 1000;
            var rowsPerVisit           = 8;
            var visitPerBatch          = (int)Math.Ceiling(visitCount / 3d);
            var rowsPerFilePartition   = visitPerBatch * rowsPerVisit;
            var eventRowsPerVisit      = 3;
            var expectedFilePartitions = 2;

            var tables = TestSets.Countries(visitCount, 37).Process(
                () => new SimpleTableMapper(new TableDefinition("Test")
                                            .Key("VisitId", s => s.Current <IVisitAggregationContext>().Visit.InteractionId)
                                            .Fact("Value", s => s.Current <IVisitAggregationContext>().Visit.Value)
                                            .Map(s => s.Current <IVisitAggregationContext>().Visit.Pages,
                                                 new TableDefinition("Pages")
                                                 .Key("PageId", s => s.Current <PageData>().Item.Id)
                                                 .Fact("Value", s => s.Current <PageData>().PageEvents.Sum(pe => pe.Value))
                                                 .Map(s => s.Current <PageData>().PageEvents,
                                                      new TableDefinition("Events")
                                                      .Dimension("Event", s => s.Current <PageEventData>().PageEventDefinitionId)
                                                      .Fact("Value", s => s.Current <PageEventData>().Value)))
                                            .Map(s => new[] { s.Current <IVisitAggregationContext>().Visit.Pages.First() },
                                                 new TableDefinition("Pages2")
                                                 .Key("Id", s => s.Current <PageData>().Item.Id))),
                initializer: p =>
            {
                p.BatchWriter = batchWriter;
                p.BatchSize   = rowsPerFilePartition;
            });


            var partitions = new DirectoryInfo(csvDir).GetDirectories().Length;

            Assert.AreEqual(2, partitions, string.Format("{0:N0} rows should create 2 file partitions and one in memory", visitCount * rowsPerVisit));
            Assert.AreEqual(expectedFilePartitions * eventRowsPerVisit * visitPerBatch, batchWriter.Tables.FirstOrDefault(t => t.Schema.Name == "Events").Rows.Count(),
                            string.Format("{0:N0} rows in event tables in file partitions", expectedFilePartitions * eventRowsPerVisit * visitPerBatch));

            Assert.AreEqual(expectedFilePartitions * rowsPerVisit * visitPerBatch, batchWriter.Tables.Sum(t => t.Rows.Count()),
                            string.Format("{0:N0} total rows in file partitions", expectedFilePartitions * rowsPerVisit * visitPerBatch));

            Assert.AreEqual(visitCount * rowsPerVisit, tables.Sum(t => t.Rows.Count()),
                            string.Format("{0:N0} rows in file + memory partitions", visitCount * rowsPerVisit));

            //Merge partitions
            tables = csv.Export(tables);


            //Delete partitions
            batchWriter.Dispose();
            partitions = new DirectoryInfo(csvDir).GetDirectories().Length;
            Assert.AreEqual(0, partitions, "Temporary partition directories are deleted");


            var visits = tables.FirstOrDefault(t => t.Schema.Name == "Test");
            var pages  = tables.FirstOrDefault(t => t.Schema.Name == "Pages");
            var pages2 = tables.FirstOrDefault(t => t.Schema.Name == "Pages2");
            var events = tables.FirstOrDefault(t => t.Schema.Name == "Events");


            Assert.AreEqual(1000, visits.Rows.Count());
            Assert.AreEqual(14000, visits.Fields <int>("Value").Sum());
            Assert.AreEqual(14000, pages.Fields <int>("Value").Sum());
            Assert.AreEqual(14000, events.Fields <int>("Value").Sum());

            Assert.AreEqual(3000, pages.Rows.Count());
            Assert.AreEqual(3000, events.Rows.Count());
            Assert.AreEqual(1000, pages2.Rows.Count());

            if (Directory.Exists(csvDir))
            {
                Directory.Delete(csvDir, true);
            }
        }