Ejemplo n.º 1
0
        public IVisitSimulator CreateSimulator()
        {
            var parser = new XGenParser(RootUrl);

            if (Specification["Segments"].Any())
            {
                var segments = parser.ParseSegments(Specification["Segments"], Type);
                return(new SegmentBasedSimulator(segments));
            }
            return(new  ContactBasedSimulator(parser.ParseContacts(Specification["Contacts"], Type)));
        }
Ejemplo n.º 2
0
        public static void Outcomes()
        {
            var segments = new JObject();
            var seg      = segments["Default"] = new JObject();
            var outcomes = seg["Outcomes"] = new JObject();


            seg["StartDate"] = "2010-01-01";
            seg["EndDate"]   = "2010-01-02";
            outcomes["{75D53206-47B3-4391-BD48-75C42E5FC2CE}"] = .5;
            outcomes["{F4830B80-1BB1-4746-89C7-96EFE40DA572}"] = .5;


            var parser = new XGenParser("http://sc80rev150427");


            var sim = new SegmentBasedSimulator(parser.ParseSegments(segments, JobType.Visits));


            var counts = new Dictionary <Guid, int>();

            var visits = 0;

            foreach (var visitor in sim.NextVisitors(1))
            {
                foreach (var visit in visitor.Commit())
                {
                    ++visits;
                    foreach (var req in visit.Requests)
                    {
                        var oc = req.GetVariable <IEnumerable <TriggerOutcomeData> >("TriggerOutcomes");
                        if (oc != null)
                        {
                            foreach (var o in oc)
                            {
                                //System.Console.Out.WriteLine(o.DefinitionId);
                                counts[o.DefinitionId] = counts.GetOrDefault(o.DefinitionId) + 1;
                            }
                        }
                    }
                }
            }

            System.Console.Out.WriteLine("{0} visits", visits);
            foreach (var c in counts)
            {
                System.Console.Out.WriteLine("{0}: {1}", c.Key, c.Value);
            }
        }
Ejemplo n.º 3
0
        static void Parser2()
        {
            var emea = GeoRegion.Regions.First(area => area.Id == "amer");

            var geodata = GeoData.FromResource();

            var country = emea.Selector(geodata);


            var freqs = Enumerable.Range(0, 10000).Select(i => country()).GroupBy(c => c.Country.Name)
                        .ToDictionary(g => g.Key, g => g.Count());

            File.WriteAllLines(@"C:\Temp\Countries.txt", new[] { "Country\tCount" }.Concat(freqs.OrderByDescending(kv => kv.Value).Select(kv => kv.Key + "\t" + kv.Value)));

            return;



            Randomness.Seed(1337);


            var json = File.ReadAllText(@"C:\Temp\Xerox2.js");

            var def    = JObject.Parse(json);
            var parser = new XGenParser("http://sc80rev150427/api/xgen/");



            //var vars = new[]{""}


            var sw = Stopwatch.StartNew();

            var visits    = 0;
            var id        = 0;
            var contactId = 0;

            using (var f = File.CreateText(@"C:\Temp\XeroxOut2.txt"))
            {
                f.Write("Contact\tId\tVisitIndex\tStart\tEnd\tHour\tDuration\tPageViews\tCampaign\tCountry\tTimeZone\tContinent\tReferrer\tLandingPage\tSite");
                f.WriteLine();

                var threads = Enumerable.Range(0, 25).Select(i =>
                {
                    var t = new Thread(() =>
                    {
                        Randomness.Seed(1337 + i);
                        var segments = parser.ParseSegments(def["Segments"], JobType.Visits);
                        var sim      = new SegmentBasedSimulator(segments);

                        foreach (var v in sim.NextVisitors(80))
                        {
                            var myId = Interlocked.Increment(ref contactId);
                            System.Console.Out.WriteLine("Visitor at {0}", v.Start);
                            try
                            {
                                var visitIndex = 0;
                                foreach (var visit in v.Segment.Behavior().Commit(v))
                                {
                                    Interlocked.Increment(ref visits);
                                    System.Console.Out.WriteLine(" - Visit at {0}", visit.Start);
                                    //foreach (var req in visit.Requests)
                                    //{
                                    //    System.Console.Out.WriteLine("   " + req.Url);
                                    //}

                                    //var visit = v.AddVisit();
                                    //visit.AddRequest("");
                                    lock (f)
                                    {
                                        f.Write("Contact" + myId);
                                        f.Write("\t");
                                        f.Write("Visit" + Interlocked.Increment(ref id));
                                        f.Write("\t");
                                        f.Write(++visitIndex);
                                        f.Write("\t");
                                        f.Write(v.Start.Date.ToString("yyyy-MM-dd"));
                                        f.Write("\t");
                                        f.Write(v.End.Date.ToString("yyyy-MM-dd"));
                                        f.Write("\t");
                                        f.Write(v.Start.Hour);
                                        f.Write("\t");
                                        f.Write((v.End - v.Start).TotalSeconds);
                                        f.Write("\t");
                                        f.Write(visit.GetVariable <double>("PageViews"));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("Campaign", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("Country", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("TimeZone", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("Continent", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("Referrer", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("LandingPage", ""));
                                        f.Write("\t");
                                        f.Write(visit.GetVariable("Site", ""));

                                        f.WriteLine();
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                System.Console.Out.WriteLine("Error: " + ex);
                            }
                            System.Console.Out.WriteLine("{0:N0} visits ({1:N2} visits per second)", visits, visits / sw.Elapsed.TotalSeconds);
                        }
                    });
                    t.Start();
                    return(t);
                }).ToArray();

                foreach (var t in threads)
                {
                    t.Join();
                }

                System.Console.Out.WriteLine("{0:N0} visits in {1:N2} seconds", visits, sw.Elapsed.TotalSeconds);
            }
        }