Example #1
0
        public void ValidateMetabank()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                    using (new SkyApplication(NOPApplication.Instance, SystemApplicationType.TestRig, mb, "US/East/CLE/A/I/wmed0001", true, null, null))
                    {
                        var output = new List <MetabaseValidationMsg>();

                        mb.Validate(output);

                        foreach (var msg in output)
                        {
                            Console.WriteLine(msg);
                        }

                        Aver.AreEqual(5, output.Count(m => m.Type == MetabaseValidationMessageType.Warning));
                        Aver.AreEqual(6, output.Count(m => m.Type == MetabaseValidationMessageType.Info));
                    }
        }
Example #2
0
        public void RC_ParentZoneGov_4_TranscendNOC()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                    using (new SkyApplication(NOPApplication.Instance, SystemApplicationType.TestRig, mb, "/US/East/CLE/A/I/wmed0001", true, null, null))
                    {
                        var host = mb.CatalogReg.NavigateHost("/US/East/CLE/A/zgov0456");

                        var zgov = host.ParentZoneGovernorPrimaryHost(false); //Do not leave this NOC
                        Aver.IsNull(zgov);

                        zgov = host.ParentZoneGovernorPrimaryHost(/* default */); //DEFAULT=FALSE Do not leave this NOC
                        Aver.IsNull(zgov);

                        zgov = host.ParentZoneGovernorPrimaryHost(true); //Transcend this NOC
                        Aver.IsNotNull(zgov);
                        Aver.AreEqual("/US/USNational/Controller/zgov0891", zgov.RegionPath);
                    }
        }
Example #3
0
        public void AppCat_ApplicationList()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Aver.IsNotNull(mb.CatalogApp);

                    Aver.IsTrue(mb.CatalogApp.IsSystem);
                    Aver.IsNotNull(mb.CatalogApp.Applications);
                    Aver.AreEqual(8, mb.CatalogApp.Applications.Count());

                    Aver.AreEqual("WebApp1", mb.CatalogApp.Applications["WebApp1"].Name);
                    Aver.AreEqual("AHGov", mb.CatalogApp.Applications["AHGov"].Name);
                    Aver.AreEqual("AZGov", mb.CatalogApp.Applications["AZGov"].Name);
                    Aver.AreEqual("AGDIDA", mb.CatalogApp.Applications["AGDIDA"].Name);
                    Aver.AreEqual("TestApp", mb.CatalogApp.Applications["TestApp"].Name);
                    Aver.AreEqual("WinFormsTest", mb.CatalogApp.Applications["WinFormsTest"].Name);
                }
        }
Example #4
0
        public void AppCat_RoleList()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Aver.IsNotNull(mb.CatalogApp);

                    Aver.IsTrue(mb.CatalogApp.IsSystem);
                    Aver.IsNotNull(mb.CatalogApp.Roles);
                    Aver.AreEqual(6, mb.CatalogApp.Roles.Count());

                    Aver.AreEqual("MixedServer", mb.CatalogApp.Roles["MixedServer"].Name);
                    Aver.AreEqual("Single", mb.CatalogApp.Roles["Single"].Name);
                    Aver.AreEqual("ZoneGovernor", mb.CatalogApp.Roles["ZoneGovernor"].Name);
                    Aver.AreEqual("WWWServer", mb.CatalogApp.Roles["WWWServer"].Name);
                    Aver.AreEqual("TestServer", mb.CatalogApp.Roles["TestServer"].Name);
                    Aver.AreEqual("Agdida", mb.CatalogApp.Roles["Agdida"].Name);
                }
        }
Example #5
0
        public void ValidateMetabank()
        {
            using (var fs = new LocalFileSystem(null))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                    using (Agni.AppModel.BootConfLoader.LoadForTest(AppModel.SystemApplicationType.TestRig, mb, "US/East/CLE/A/I/wmed0001"))
                    {
                        var output = new List <MetabaseValidationMsg>();

                        mb.Validate(output);

                        foreach (var msg in output)
                        {
                            Console.WriteLine(msg);
                        }

                        Aver.AreEqual(5, output.Count(m => m.Type == MetabaseValidationMessageType.Warning));
                        Aver.AreEqual(6, output.Count(m => m.Type == MetabaseValidationMessageType.Info));
                    }
        }
Example #6
0
        public void RC_GeoDistanceBetweenPaths()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    var d1 = mb.CatalogReg.GetGeoDistanceBetweenPaths("/europe/west/ams", "/us/east/cle");
                    var d2 = mb.CatalogReg.GetGeoDistanceBetweenPaths("/europe/west/ams", "/us/east/jfk");
                    var d3 = mb.CatalogReg.GetGeoDistanceBetweenPaths("/europe/west/ams", "/africa/cairo");
                    var d4 = mb.CatalogReg.GetGeoDistanceBetweenPaths("/africa/cairo", "/europe/west/ams");


                    Console.WriteLine("Physical geo distance between AMS and CLE is {0}km", d1);
                    Console.WriteLine("Physical geo distance between AMS and JFK is {0}km", d2);
                    Console.WriteLine("Physical geo distance between AMS and Cairo is {0}km", d3);
                    Aver.IsTrue(d2 < d1);
                    Aver.IsTrue(d3 < d2);

                    Aver.AreEqual(d3, d4);
                }
        }
Example #7
0
        public void RC_ParentNOCZone()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                    using (new SkyApplication(NOPApplication.Instance, SystemApplicationType.TestRig, mb, "/US/East/CLE/A/I/wmed0001", true, null, null))
                    {
                        var nocNATIONAL = mb.CatalogReg.NavigateNOC("/US/USNational.noc");
                        var nocCLE      = mb.CatalogReg.NavigateNOC("/US/East/Cle.noc");
                        var nocLAX      = mb.CatalogReg.NavigateNOC("/US/West/LAX.noc");
                        var nocJFK      = mb.CatalogReg.NavigateNOC("/US/East/JFK.noc");
                        var nocAMS      = mb.CatalogReg.NavigateNOC("/Europe/West/AMS.noc");

                        Aver.IsTrue(nocCLE.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));
                        Aver.IsTrue(nocLAX.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));
                        Aver.IsTrue(nocJFK.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));

                        Aver.IsNull(nocAMS.ParentNOCZone);
                        Aver.IsNull(nocAMS.ParentNOCZonePath);
                    }
        }
Example #8
0
        public void RC_ParentNOCZone()
        {
            using (var fs = new LocalFileSystem(null))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                    using (AppModel.BootConfLoader.LoadForTest(AppModel.SystemApplicationType.ZoneGovernor, mb, "/US/East/CLE/A/I/wmed0001"))
                    {
                        var nocNATIONAL = mb.CatalogReg.NavigateNOC("/US/USNational.noc");
                        var nocCLE      = mb.CatalogReg.NavigateNOC("/US/East/Cle.noc");
                        var nocLAX      = mb.CatalogReg.NavigateNOC("/US/West/LAX.noc");
                        var nocJFK      = mb.CatalogReg.NavigateNOC("/US/East/JFK.noc");
                        var nocAMS      = mb.CatalogReg.NavigateNOC("/Europe/West/AMS.noc");

                        Aver.IsTrue(nocCLE.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));
                        Aver.IsTrue(nocLAX.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));
                        Aver.IsTrue(nocJFK.ParentNOCZone.NOC.IsLogicallyTheSame(nocNATIONAL));

                        Aver.IsNull(nocAMS.ParentNOCZone);
                        Aver.IsNull(nocAMS.ParentNOCZonePath);
                    }
        }
Example #9
0
        public void RC_Navigate_Methods()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US/East").ParentRegion.Name);
                    Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US/East.r").ParentRegion.Name);
                    Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US.r/East.r").ParentRegion.Name);

                    Aver.AreEqual("East", mb.CatalogReg.NavigateNOC("/US/East/CLE").ParentRegion.Name);
                    Aver.AreEqual("CLE", mb.CatalogReg.NavigateNOC("/US/East/CLE.noc").Name);

                    Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A/I").ParentZone.Name);
                    Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A.z/I").ParentZone.Name);
                    Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A/I.z").ParentZone.Name);

                    Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US/East/CLE/A/I/wmed0001").ParentZone.NOC.Name);
                    Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US/East/CLE.noc/A.z/I.z/wmed0001.h").ParentZone.NOC.Name);
                    Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US.r/East/CLE.noc/A/I.z/wmed0001.h").ParentZone.NOC.Name);
                }
        }
Example #10
0
        public void AppCat_RoleList_Parallel()
        {
            using (var fs = new LocalFileSystem(null))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Parallel.For(0, TestSources.PARALLEL_LOOP_TO,
                                 (i) =>
                                 { Thread.SpinWait(ExternalRandomGenerator.Instance.NextScaledRandomInteger(100, 10000));

                                   Aver.IsNotNull(mb.CatalogApp);

                                   Aver.IsTrue(mb.CatalogApp.IsSystem);
                                   Aver.IsNotNull(mb.CatalogApp.Roles);
                                   Aver.AreEqual(6, mb.CatalogApp.Roles.Count());

                                   Aver.AreEqual("MixedServer", mb.CatalogApp.Roles["MixedServer"].Name);
                                   Aver.AreEqual("Single", mb.CatalogApp.Roles["Single"].Name);
                                   Aver.AreEqual("ZoneGovernor", mb.CatalogApp.Roles["ZoneGovernor"].Name);
                                   Aver.AreEqual("WWWServer", mb.CatalogApp.Roles["WWWServer"].Name);
                                   Aver.AreEqual("TestServer", mb.CatalogApp.Roles["TestServer"].Name);
                                   Aver.AreEqual("Agdida", mb.CatalogApp.Roles["Agdida"].Name); });
                }
        }
Example #11
0
        public void AppCat_ApplicationList_Parallel()
        {
            using (var fs = new LocalFileSystem(null))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Parallel.For(0, TestSources.PARALLEL_LOOP_TO,
                                 (i) =>
                                 { Thread.SpinWait(ExternalRandomGenerator.Instance.NextScaledRandomInteger(100, 10000));

                                   Aver.IsNotNull(mb.CatalogApp);

                                   Aver.IsTrue(mb.CatalogApp.IsSystem);
                                   Aver.IsNotNull(mb.CatalogApp.Applications);
                                   Aver.AreEqual(8, mb.CatalogApp.Applications.Count());

                                   Aver.AreEqual("WebApp1", mb.CatalogApp.Applications["WebApp1"].Name);
                                   Aver.AreEqual("AHGov", mb.CatalogApp.Applications["AHGov"].Name);
                                   Aver.AreEqual("AZGov", mb.CatalogApp.Applications["AZGov"].Name);
                                   Aver.AreEqual("AGDIDA", mb.CatalogApp.Applications["AGDIDA"].Name);
                                   Aver.AreEqual("TestApp", mb.CatalogApp.Applications["TestApp"].Name);
                                   Aver.AreEqual("WinFormsTest", mb.CatalogApp.Applications["WinFormsTest"].Name); });
                }
        }
Example #12
0
        public void AppCat_Packages()
        {
            using (var fs = new LocalFileSystem(null))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    var app = mb.CatalogApp.Applications["TestApp"];

                    var packages = app.Packages.ToList();

                    Aver.AreEqual("TestApp", app.Name);
                    Aver.AreEqual("App for unit testing", app.Description);

                    Aver.AreEqual(3, packages.Count);
                    Aver.AreEqual("TestPackage1", packages[0].Name);
                    Aver.AreEqual(Metabank.DEFAULT_PACKAGE_VERSION, packages[0].Version);

                    Aver.AreEqual("TestPackage2", packages[1].Name);
                    Aver.AreEqual("older", packages[1].Version);

                    Aver.AreEqual("TestPackage3", packages[2].Name);
                    Aver.AreEqual(Metabank.DEFAULT_PACKAGE_VERSION, packages[2].Version);
                }
        }
Example #13
0
        private Metabank mountMetabank()
        {
            var mNode = m_BootApplication.ConfigRoot[CONFIG_SKY_SECTION][CONFIG_METABASE_SECTION];

            ensureMetabaseAppName(mNode);

            FileSystemSessionConnectParams fsSessionConnectParams;
            var fs = getFileSystem(mNode, out fsSessionConnectParams);

            m_IsMetabaseFSOwner = true;

            var fsRoot = mNode[CONFIG_FS_SECTION].AttrByName(CONFIG_ROOT_ATTR).Value;

            if (fsRoot.IsNullOrWhiteSpace())
            {
                writeLog(MessageType.Info,
                         "Metabase fs root is null in config, trying to take from machine env var {0}".Args(ENV_VAR_METABASE_FS_ROOT));
                fsRoot = Environment.GetEnvironmentVariable(ENV_VAR_METABASE_FS_ROOT);
            }


            writeLog(MessageType.Info, "Metabase FS root: " + fsRoot);


            writeLog(MessageType.Info, "Mounting metabank...");
            try
            {
                var result = new Metabank(m_BootApplication, m_Application, fs, fsSessionConnectParams, fsRoot);
                writeLog(MessageType.Info, "...Metabank mounted");
                return(result);
            }
            catch (Exception error)
            {
                writeLog(MessageType.CatastrophicError, error.ToMessageWithType());
                throw error;
            }
        }
Example #14
0
        internal static void Unload()
        {
            if (!s_Loaded)
            {
                return;
            }
            s_Loaded = false;
            s_SystemApplicationType = AppModel.SystemApplicationType.Unspecified;
            s_HostName = null;
            s_DynamicHostNameSuffix             = null;
            s_ParentZoneGovernorPrimaryHostName = null;
            try
            {
                if (s_Metabase != null)
                {
                    var mb = s_Metabase;
                    var fs = mb.FileSystem;
                    s_Metabase = null;

                    try
                    {
                        mb.Dispose();
                    }
                    finally
                    {
                        if (fs != null)
                        {
                            fs.Dispose();
                        }
                    }//finally
                }
            }
            catch
            {
                //nowhere to log anymore as all loggers have stopped
            }
        }
Example #15
0
        static void run(string[] args)
        {
            using (var app = new AzosApplication(allowNesting: true, args: args, rootConfig: null))
            {
                var silent = app.CommandArgs["s", "silent"].Exists;
                if (!silent)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Welcome.txt"));

                    ConsoleUtils.Info("Build information:");
                    Console.WriteLine(" Azos:     " + BuildInformation.ForFramework);
                    Console.WriteLine(" Tool:     " + new BuildInformation(typeof(amm.ProgramBody).Assembly));
                }

                if (app.CommandArgs["?", "h", "help"].Exists)
                {
                    ConsoleUtils.WriteMarkupContent(typeof(ProgramBody).GetText("Help.txt"));
                    return;
                }


                var mbPath = app.CommandArgs
                             .AttrByIndex(0)
                             .ValueAsString(System.Environment.GetEnvironmentVariable(BootConfLoader.ENV_VAR_METABASE_FS_ROOT));

                if (!Directory.Exists(mbPath))
                {
                    throw new Exception("Specified metabase path not found");
                }

                var fromHost = app.CommandArgs["host", "from"].AttrByIndex(0).Value;
                if (fromHost.IsNullOrWhiteSpace())
                {
                    fromHost = System.Environment.GetEnvironmentVariable(BootConfLoader.ENV_VAR_HOST_NAME);
                }

                if (!silent)
                {
                    ConsoleUtils.Info("Metabase path: " + mbPath);
                    ConsoleUtils.Info("Host (this machine): " + fromHost);
                }

                var w = System.Diagnostics.Stopwatch.StartNew();

                using (var fs = new LocalFileSystem(app))
                    using (var mb = new Metabank(fs, new FileSystemSessionConnectParams(), mbPath))
                    {
                        //using (new BootConfLoader(SystemApplicationType.Tool, mb, fromHost))
                        using (var skyApp = new SkyApplication(app, SystemApplicationType.Tool, mb, fromHost, allowNesting: false, args: null, rootConfig: null))
                        {
                            if (app.CommandArgs["gbm"].Exists)
                            {
                                generateManifests(mb, silent);
                            }
                            else
                            {
                                validate(mb, silent);
                            }
                        }
                    }

                if (!silent)
                {
                    Console.WriteLine();
                    ConsoleUtils.Info("Run time: " + w.Elapsed.ToString());
                }
            }//using APP
        }
Example #16
0
 internal SecCatalog(Metabank bank) : base(bank, SEC_CATALOG)
 {
 }
Example #17
0
        public void RC_Various_Parallel()
        {
            using (var fs = new LocalFileSystem(NOPApplication.Instance))
                using (var mb = new Metabank(fs, null, TestSources.RPATH))
                {
                    Parallel.For(0, TestSources.PARALLEL_LOOP_TO,
                                 (i) =>
                    {
                        Thread.SpinWait(Ambient.Random.NextScaledRandomInteger(10, 1000));

                        Aver.IsTrue(mb.CatalogReg.IsSystem);
                        Aver.IsNotNull(mb.CatalogReg.Regions["US"]);
                        Aver.IsNotNull(mb.CatalogReg.Regions["Europe"]);
                        Aver.AreEqual("US", mb.CatalogReg.Regions["US"].Name);
                        Aver.AreEqual("Europe", mb.CatalogReg.Regions["Europe"].Name);
                        Aver.AreEqual("US", mb.CatalogReg["/US"].Name);
                        Aver.AreEqual("Europe", mb.CatalogReg["/Europe"].Name);
                        Aver.AreEqual("East", mb.CatalogReg["/US/East"].Name);
                        Aver.AreEqual("East", mb.CatalogReg["/US/East.r"].Name);
                        Aver.AreEqual("East", mb.CatalogReg["/US.r/East"].Name);
                        Aver.AreEqual("CLE", mb.CatalogReg["/US/East/CLE"].Name);
                        Aver.AreEqual("CLE", mb.CatalogReg["/US/East/CLE.noc"].Name);
                        Aver.AreEqual("CLE", mb.CatalogReg["/US.r/East/CLE.noc"].Name);
                        Aver.AreEqual("CLE", mb.CatalogReg["/US.r/East.r/CLE.noc"].Name);
                        Aver.AreEqual("I", mb.CatalogReg["/US/East/CLE/A/I"].Name);
                        Aver.AreEqual("A", mb.CatalogReg["/US/East/CLE.noc/A.z"].Name);
                        Aver.AreEqual("wmed0001", mb.CatalogReg["/US/East/CLE/A/I/wmed0001"].Name);
                        Aver.AreEqual("wmed0001", mb.CatalogReg["/US/East/CLE.noc/A/I/wmed0001"].Name);
                        Aver.AreEqual("/US/East/CLE/A/I/wmed0001", mb.CatalogReg["/US/East/CLE/A/I/wmed0001"].RegionPath);
                        Aver.AreEqual("/US/East/CLE/A/I/wmed0001", mb.CatalogReg["/US.r/East/CLE.noc/a/i/wmed0001.h"].RegionPath);
                        Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US/East").ParentRegion.Name);
                        Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US/East.r").ParentRegion.Name);
                        Aver.AreEqual("US", mb.CatalogReg.NavigateRegion("/US.r/East.r").ParentRegion.Name);

                        Aver.AreEqual("East", mb.CatalogReg.NavigateNOC("/US/East/CLE").ParentRegion.Name);
                        Aver.AreEqual("CLE", mb.CatalogReg.NavigateNOC("/US/East/CLE.noc").Name);

                        Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A/I").ParentZone.Name);
                        Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A.z/I").ParentZone.Name);
                        Aver.AreEqual("A", mb.CatalogReg.NavigateZone("/US/East/CLE/A/I.z").ParentZone.Name);

                        Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US/East/CLE/A/I/wmed0001").ParentZone.NOC.Name);
                        Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US/East/CLE.noc/A.z/I.z/wmed0001.h").ParentZone.NOC.Name);
                        Aver.AreEqual("CLE", mb.CatalogReg.NavigateHost("/US.r/East/CLE.noc/A/I.z/wmed0001.h").ParentZone.NOC.Name);

                        var host = mb.CatalogReg.NavigateHost("/US.r/East/CLE.noc/A/I.z/wmed0001.h");

                        var list = host.ParentSectionsOnPath.ToList();

                        Aver.AreEqual(5, list.Count);
                        Aver.AreEqual("US", list[0].Name);
                        Aver.AreEqual("East", list[1].Name);
                        Aver.AreEqual("CLE", list[2].Name);
                        Aver.AreEqual("A", list[3].Name);
                        Aver.AreEqual("I", list[4].Name);

                        Aver.AreEqual(0, mb.CatalogReg.CountMatchingPathSegments("US/East/CLE/A/I", "Africa/Cairo"));
                        Aver.AreEqual(2, mb.CatalogReg.CountMatchingPathSegments("US/East/CLE/A/I", "US/East/JFK"));
                        Aver.AreEqual(4, mb.CatalogReg.CountMatchingPathSegments("US/East/CLE/A/I/wmed0001", "US/East/CLE/A/II/wmed0005"));

                        Aver.AreEqual(0.5d, mb.CatalogReg.GetMatchingPathSegmentRatio("/US/East/CLE/A", "/US/East/JFK/A"));
                        Aver.AreEqual(0d, mb.CatalogReg.GetMatchingPathSegmentRatio("Us", "Europe"));
                        Aver.AreEqual(1d, mb.CatalogReg.GetMatchingPathSegmentRatio("EUROPE", "Europe.r"));
                    });
                }
        }