示例#1
0
        /// <summary>
        /// Deserialize all result packages and dictionary with packages data.
        /// </summary>
        private void _DeserializeAllPackagesV1()
        {
            Console.WriteLine("Packages deserialization started..");

            JsonSerializerSettings packageSerializationSettings = new JsonSerializerSettings
            {
                CheckAdditionalContent = true,
                MissingMemberHandling  = MissingMemberHandling.Error,
                ReferenceLoopHandling  = ReferenceLoopHandling.Error,
                DefaultValueHandling   = DefaultValueHandling.Populate,
                ContractResolver       = new EscapedStringResolver(),
                FloatFormatHandling    = FloatFormatHandling.String,
                FloatParseHandling     = FloatParseHandling.Double,
                Culture = CultureInfo.InvariantCulture
            };

            packageSerializationSettings.Converters.Add(new RequestJsonConverterV1());
            packageSerializationSettings.Converters.Add(new CommonConverterV1());
            packageSerializationSettings.Converters.Add(new EventsArrayConverter());
            packageSerializationSettings.Converters.Add(new LuDataConverter());

            foreach (string directory in Directory.GetDirectories(CounterSettings.PathToResults))
            {
                string platformName = Path.GetFileName(directory);

                Console.Write($"Deserialize {platformName} packages..");

                Dictionary <string, List <ProxyPackageInfoV1> > platformPackagesDictionary =
                    new Dictionary <string, List <ProxyPackageInfoV1> >();

                foreach (string subDirectory in Directory.GetDirectories(directory))
                {
                    List <ProxyPackageInfoV1> packagesList = new List <ProxyPackageInfoV1>();

                    IEnumerable <string> jsonFiles = Directory.GetFiles(subDirectory, "*.json");

                    foreach (string jsonFile in jsonFiles)
                    {
                        string packageContent = File.ReadAllText(jsonFile, Encoding.UTF8);

                        ProxyPackageInfoV1 deserializedJsonV1 = JsonConvert.DeserializeObject <ProxyPackageInfoV1>(
                            packageContent,
                            packageSerializationSettings
                            );

                        packagesList.Add(deserializedJsonV1);
                    }

                    string testName = Path.GetFileName(subDirectory);

                    platformPackagesDictionary.Add(testName, packagesList);

                    Console.Write(".");
                }

                Console.WriteLine();

                this._deserializedPackages.Add(platformName, platformPackagesDictionary);
            }
        }
示例#2
0
        private ProxyPackageInfoV1 _GetPackageWithLastEventOfType <T>(IEnumerable <ProxyPackageInfoV1> testPackages)
        {
            IEnumerable <T>             desiredTypeEvents = testPackages.GetAllLuEvents().AllSubeventsOfType <T>();
            IEnumerable <IHasTimestamp> timestampEvents   =
                testPackages.GetAllLuEvents().AllSubeventsOfType <IHasTimestamp>().OrderBy(e => e.Timestamp);

            if (desiredTypeEvents.Count() != 0 && timestampEvents.Count() != 0)
            {
                IHasTimestamp lastEventByTimestamp = timestampEvents.Last();

                foreach (T desiredTypeEvent in desiredTypeEvents)
                {
                    if (desiredTypeEvent is IHasTimestamp timestampEvent &&
                        timestampEvent == lastEventByTimestamp
                        )
                    {
                        lastEventByTimestamp = timestampEvent;
                    }
                }

                if (lastEventByTimestamp is T &&
                    lastEventByTimestamp is AbstractSdkEventV1 abstractSdkEvent
                    )
                {
                    ProxyPackageInfoV1 packageWithDesiredEvent = abstractSdkEvent.FindPackageForSubEvent(testPackages);
                    return(packageWithDesiredEvent.GetAllLuEvents().GetAllLevelSubevents().Count() == 1 ? packageWithDesiredEvent : null);
                }
            }

            return(null);
        }
示例#3
0
        public static IEnumerable <Dictionary <int, LuEvent> > GetAllLuEvents(
            this ProxyPackageInfoV1 package
            )
        {
            if (package.RequestJson is LuData luData)
            {
                return(new List <Dictionary <int, LuEvent> >()
                {
                    luData.LuEvents
                });
            }

            return(null);
        }
示例#4
0
        private TestPackagesData _CalculatePackages(
            List <ProxyPackageInfoV1> testPackagesOriginal,
            string testName
            )
        {
            List <ProxyPackageInfoV1> testPackages =
                this._GetTestPackagesWithoutDoubles(new List <ProxyPackageInfoV1>(testPackagesOriginal));

            this._previousTestPackages = new List <ProxyPackageInfoV1>(testPackagesOriginal);

            List <string>             doublesSignatures    = this.PackagesDoubleCheck(testPackages, testPackagesOriginal);
            List <ProxyPackageInfoV1> alContainingPackages = this._FindAllPackagesOfEvent <AlEvent>(testPackages).ToList();
            List <ProxyPackageInfoV1> ueContainingPackages = this._FindAllPackagesOfEvent <UeEvent>(testPackages).ToList();

            ProxyPackageInfoV1 packageWithLastAlEvent = this._GetPackageWithLastEventOfType <AlEvent>(testPackages);
            ProxyPackageInfoV1 packageWithLastUeEvent = this._GetPackageWithLastEventOfType <UeEvent>(testPackages);

            IEnumerable <ProxyPackageInfoV1> sdkVersionPackages = testPackages.Where(e => e.RequestJson is SdkVersionData);

            bool previousTestContainsClean = this.testBeforeCleanDictionary != null &&
                                             this.testBeforeCleanDictionary.ContainsKey(testName.ToUpper()) &&
                                             this.testBeforeCleanDictionary[testName.ToUpper()];

            TestPackagesData testPackagesData = new TestPackagesData(
                originalPackagesCount: testPackagesOriginal.Count,
                packagesCount: testPackages.Count,
                alPackagesCount: alContainingPackages.Count,
                uePackagesCount: ueContainingPackages.Count,
                caPackagesCount: 0,
                attemptPackagesCount: 0,
                sdkVersionCount: sdkVersionPackages.Count(),
                isLastAlRemoved: (previousTestContainsClean && CounterSettings.IgnoreLastAl) && packageWithLastAlEvent != null,
                isLastUeRemoved: (previousTestContainsClean && CounterSettings.IgnoreBadUe) && packageWithLastUeEvent != null,
                isFirstUeRemoved: false,
                isAllEventsOrdered: true,
                events: null,
                doublesSignatures: doublesSignatures,
                badCodesPackages: new List <ProxyPackageInfo>(),
                previousTestContainsCleaning: previousTestContainsClean,
                containsDeserializationErrors: false
                );

            return(testPackagesData);
        }