Ejemplo n.º 1
0
        protected override void OnHandler(ParameterHandlerInfo info)
        {
            Core.Log.Warning("Starting Serializer TEST");

            if (info.Arguments?.Contains("/complex") == true)
            {
                var file       = "c:\\temp\\complex.test.nbin.gz";
                var serializer = SerializerManager.GetByFileName(file);

                AssemblyResolverManager.RegisterDomain(new[] { @"C:\AGSW_GIT\Travel\src\Flights\Engines\Services\Agsw.Travel.Flights.Engines.Service\bin\Release\netcoreapp2.2" });
                //AssemblyResolverManager.RegisterDomain(new[] { @"C:\Repo\AgswGit\Travel\src\Flights\Engines\Services\Agsw.Travel.Flights.Engines.Service\bin\Release\netcoreapp2.2" });

                object value = null;
                try
                {
                    value = serializer.DeserializeFromFile <object>(file);
                    //value = rMsg.Body.GetValue();
                }
                catch (DeserializerException exGO)
                {
                    var jsonSerializer = new JsonTextSerializer {
                        Indent = true
                    };
                    jsonSerializer.SerializeToFile(exGO.Value, "c:\\temp\\complexObject-GenericObject.json");

                    var val = exGO.Value["Products"][5];
                }

                RunTestEx(value, 500, null);
                //GC.Collect();
                //GC.WaitForFullGCComplete();
                //RunTestEx(value, 200, new GZipCompressor());
                //GC.Collect();
                //GC.WaitForFullGCComplete();
                //RunTestEx(value, 200, new DeflateCompressor());

                return;
            }

            var sTest = new STest
            {
                FirstName = "Daniel",
                LastName  = "Redondo",
                Age       = 33,
                value     = 166
            };

            var collection = new List <List <STest> >();

            for (var i = 0; i <= 10; i++)
            {
                var colSTest = new List <STest>
                {
                    sTest, sTest, sTest, sTest, sTest, sTest,
                    sTest, sTest, sTest, sTest, sTest, sTest,
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 0, Age = 1, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 1, Age = 2, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 2, Age = 3, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 3, Age = 4, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 4, Age = 5, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 5, Age = 6, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 6, Age = 7, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 7, Age = 8, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 8, Age = 9, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 9, Age = 10, Brother = sTest
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 10, Age = 11
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 11, Age = 12
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 12, Age = 13
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 13, Age = 14
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 14, Age = 15
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 15, Age = 16
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 16, Age = 17
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 17, Age = 18
                    },
                    new STest {
                        FirstName = "Person", LastName = "Person" + i + "." + i + 18, Age = 19
                    },
                    //new STest2 { FirstName = "Person" , LastName = "Person" + i + "." + i+19, Age = 20, New = "This is a test" }
                };
                collection.Add(colSTest);
            }

            var lt = new List <STest>
            {
                new STest {
                    FirstName = "Name1", LastName = "LName1", Age = 11
                },
                //new STest2 { FirstName = "Name2" , LastName = "LName2", Age = 20, New = "This is a test" }
            };

            var lt2 = new List <Test3>
            {
                new Test3 {
                    Values = new List <int> {
                        2, 3, 4, 5
                    }
                },
                new Test3 {
                    Values = new List <int> {
                        10, 11, 12, 13
                    }
                }
            };

            var dct = new Dictionary <string, int>
            {
                ["Value1"] = 1,
                ["Value2"] = 2,
                ["Value3"] = 3,
            };

            var colClone = collection[0].DeepClone();
            var clone    = collection.DeepClone();



            if (info.Arguments?.Contains("/parallel") == true)
            {
                RunSingleTest(collection[0], 2, false);
                Core.Log.InfoBasic("Press ENTER to Start:");
                Console.ReadLine();
                Task.WaitAll(
                    Enumerable.Range(0, 8).Select(i => Task.Run(() => RunSingleTest(collection[0], 200_000, false))).ToArray()
                    );
                Console.ReadLine();
                return;
            }

            RunTest(collection[0], 200_000, false);
        }
Ejemplo n.º 2
0
        public static void Init(Factories factories)
        {
            if (_initialized)
            {
                return;
            }
            _initialized = true;
            UpdateLocalUtc();
            Factory.SetFactories(factories);
            Status = Factory.CreateStatusEngine();
            Log    = Factory.CreateLogEngine();
            Trace  = Factory.CreateTraceEngine();
            factories.Init();
            GlobalSettings.ReloadSettings();
            DebugMode = DebugMode || GlobalSettings.DebugMode;
            if (DebugMode)
            {
                Log.InfoBasic("Core Init - Platform: {0} - OS: {1}", Factory.PlatformType, RuntimeInformation.OSDescription);
                Log.InfoBasic("Directory: {0}", Directory.GetCurrentDirectory());
            }
            AssemblyResolverManager.RegisterDomain();
            if (ServiceContainer.HasConsole)
            {
                Log.AddConsoleStorage();
            }

            if (Injector?.Settings != null && Injector.Settings.Interfaces.Count > 0)
            {
                //Init Log
                Log.LibDebug("Loading log engine configuration");
                var logStorages = Injector.GetNames <ILogStorage>();
                if (logStorages?.Any() == true)
                {
                    foreach (var name in logStorages)
                    {
                        if (!Settings[$"Core.Log.Storage.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading log storage: {0}", name);
                        var lSto = Injector.New <ILogStorage>(name);
                        if (lSto == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ILogStorage).Name, name);
                            continue;
                        }
                        if (lSto.GetType() == typeof(ConsoleLogStorage))
                        {
                            Log.LibDebug("Console log storage already added, ignoring.");
                            continue;
                        }
                        Log.Storage.Add(lSto, Settings[$"Core.Log.Storage.{name}.LogLevel"].ParseTo(LogLevel.Error | LogLevel.Warning));
                    }
                }
                var logStorage = Log.Storage.Get(typeof(ConsoleLogStorage));
                if (!Settings["Core.Log.Storage.Console.Enabled"].ParseTo(true))
                {
                    Log.Storage.Remove(logStorage);
                }
                Log.Storage.ChangeStorageLogLevel(logStorage, Settings["Core.Log.Storage.Console.LogLevel"].ParseTo(LogStorageCollection.AllLevels));
                Log.MaxLogLevel = (LogLevel)GlobalSettings.LogMaxLogLevel;
                Log.Enabled     = GlobalSettings.LogEnabled;

                //Init Trace
                Log.LibDebug("Loading trace engine configuration");
                var traceStorages = Injector.GetNames <ITraceStorage>();
                if (traceStorages?.Any() == true)
                {
                    foreach (var name in traceStorages)
                    {
                        if (!Settings[$"Core.Trace.Storage.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading trace storage: {0}", name);
                        var lTrace = Injector.New <ITraceStorage>(name);
                        if (lTrace == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(ITraceStorage).Name, name);
                            continue;
                        }
                        Trace.Storage.Add(lTrace);
                    }
                }
                Trace.Enabled = GlobalSettings.TraceEnabled;

                //Init Status
                Log.LibDebug("Loading status engine configuration");
                var statusTransports = Injector.GetNames <IStatusTransport>();
                if (statusTransports?.Any() == true)
                {
                    foreach (var name in statusTransports)
                    {
                        if (!Settings[$"Core.Status.Transport.{name}.Enabled"].ParseTo(false))
                        {
                            continue;
                        }
                        Log.LibDebug("Loading status transport: {0}", name);
                        var sTransport = Injector.New <IStatusTransport>(name);
                        if (sTransport == null)
                        {
                            Log.Warning("The Injection for \"{0}\" with name \"{1}\" is null.", typeof(IStatusTransport).Name, name);
                            continue;
                        }
                        Status.Transports.Add(sTransport);
                    }
                }
                Status.Enabled = GlobalSettings.StatusEnabled;
            }

            try
            {
                var allAssemblies = Factory.GetAllAssemblies();
                var types         = allAssemblies.SelectMany(a =>
                {
                    try
                    {
                        return(a.DefinedTypes);
                    }
                    catch
                    {
                        // ignored
                    }
                    return(new TypeInfo[0]);
                }).Where(t => !t.IsAbstract && t.IsClass && t.ImplementedInterfaces.Contains(typeof(ICoreStart))).ToArray();
                if (types?.Any() == true)
                {
                    foreach (var type in types)
                    {
                        try
                        {
                            var instance = (ICoreStart)Activator.CreateInstance(type.AsType());
                            Log.LibDebug("Loading CoreStart from: {0}", instance);
                            instance.CoreInit(factories);
                        }
                        catch (Exception ex)
                        {
                            Log.Write(ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex);
            }

            Status.Attach(() =>
            {
                if (Settings == null)
                {
                    return(null);
                }
                var sItem = new StatusItem
                {
                    Name = "Application Information\\Settings"
                };
                Settings.OrderBy(i => i.Key).Each(i => sItem.Values.Add(i.Key, i.Value));
                return(sItem);
            });

            var onError = false;

            lock (OninitActions)
            {
                while (OninitActions.Count > 0)
                {
                    try
                    {
                        OninitActions.Dequeue()();
                    }
                    catch (Exception ex)
                    {
                        Log.Write(ex);
                        onError = true;
                    }
                }
            }
            Log.Start();

            Task.Delay(25).WaitAsync();

            var dlog = (Log as DefaultLogEngine);

            dlog?.LogDoneTask.WaitAsync();

            if (onError)
            {
                throw new Exception("Error initializing the application.");
            }

            Log.LibDebug("Core has been initialized.");
        }