Exemplo n.º 1
0
        public void TestManifestLoadingFromByteStream()
        {
            string        sequenceToCheck = "<provider name=\"TestEventSource\" guid=\"{0d468d81-a713-4c16-a8a3-a3d0d3535eae}\"";
            string        workDirectory   = Directory.GetCurrentDirectory();
            ManifestCache manifestCache   = new ManifestCache(workDirectory);

            manifestCache.LoadManifest(manifestInBytes);
            string manifestFilePath = Path.Combine(workDirectory, "WFDynMan", "0d468d81-a713-4c16-a8a3-a3d0d3535eae.man");

            // Verify if manifest was generated
            Assert.IsTrue(File.Exists(manifestFilePath), "Dynamic manifest was not created at " + manifestFilePath);
            // Verify the sanity of dynamic manifest
            Assert.IsTrue(File.ReadLines(manifestFilePath).Any(line => line.Contains(sequenceToCheck)),
                          "Dynamic manifest is malformed, check the contents of " + manifestFilePath);
        }
Exemplo n.º 2
0
        /// <summary>
        /// <remarks>Adapted from DCA</remarks>
        /// </summary>
        private static void LoadManifestCache()
        {
            try
            {
                string manifestFileDirectory = FabricEnvironment.GetCodePath();

                // Get the Windows Fabric manifest file
                string manifestFile = Path.Combine(
                    manifestFileDirectory,
                    WindowsFabricManifestFileName);

                // Load the manifest
                manifestCache = new ManifestCache(Path.Combine(GetLogRoot(), WorkFolder));
                manifestCache.LoadManifest(manifestFile);
            }
            catch (Exception e)
            {
                Console.WriteLine(StringResources.EventStoreError_EventManifestLoadFailure, e.Message);
            }
        }
        public ManifestCache LoadManifests(string manifestPath, string cacheLocation, Version version)
        {
            string versionString = $"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}";

            if (ManifestCache == null)
            {
                ManifestCache = new ManifestCache(cacheLocation);
            }

            ManifestLoader manifest = new ManifestLoader();

            if (Directory.Exists(manifestPath) && Directory.Exists(cacheLocation))
            {
                List <string> manifestFiles = Directory.GetFiles(manifestPath, $"*{Constants.EtwManifestExtension}").ToList();
                Log.Info("manifest files:", manifestFiles);

                if (version != new Version())
                {
                    manifestFiles = manifestFiles.Where(x => Regex.IsMatch(x, Regex.Escape(versionString))).ToList();
                }
                else
                {
                    Log.Info("getting latest version");
                    string        versionPattern           = @"_(\d+?\.\d+?\.\d+?\.\d+?)(?:_|\.)";
                    Version       maxVersion               = new Version();
                    List <string> versionedManifestFiles   = manifestFiles.Where(x => Regex.IsMatch(x, versionPattern)).ToList();
                    List <string> unVersionedManifestFiles = manifestFiles.Where(x => !Regex.IsMatch(x, versionPattern)).ToList();

                    foreach (string file in versionedManifestFiles)
                    {
                        Version fileVersion = new Version(Regex.Match(file, versionPattern).Groups[1].Value);
                        if (fileVersion > maxVersion)
                        {
                            Log.Info($"setting maxVersion:{maxVersion} -> {fileVersion}");
                            maxVersion = fileVersion;
                        }
                    }

                    versionedManifestFiles = manifestFiles.Where(x => Regex.IsMatch(x, $@"_{maxVersion.Major}\.{maxVersion.Minor}\.{maxVersion.Build}\.{maxVersion.Revision}(?:_|\.)")).ToList();
                    unVersionedManifestFiles.AddRange(versionedManifestFiles);
                    manifestFiles = unVersionedManifestFiles;
                }

                Log.Info("filtered manifest files:", ConsoleColor.Cyan, null, manifestFiles);

                foreach (string manifestFile in manifestFiles)
                {
                    ManifestDefinitionDescription        description          = manifest.LoadManifest(manifestFile);
                    List <ProviderDefinitionDescription> manifestProviderList = description.Providers.ToList();

                    if (!ManifestCache.ProviderDefinitions.Keys.Any(x => manifestProviderList.Any(y => y.Guid == x)))
                    {
                        ManifestCache.LoadManifest(manifestFile);
                    }
                    else
                    {
                        Log.Warning($"manifest already loaded:{manifestFile}");
                    }
                }
            }
            else
            {
                Log.Error($"manifest path does not exist:{manifestPath} or cachelocation does not exist:{cacheLocation}");
            }

            return(ManifestCache);
        }
        public static void AzureTableUploaderTestSetup(object testContext)
        {
            Verify.IsTrue(EntityDeletionAgeMinutes > 0);

            string assemblyLocation = Assembly.GetExecutingAssembly().Location;
            string manifestDir      = Path.GetDirectoryName(assemblyLocation);

            // Prepare the manifest cache
            manifestCache = new ManifestCache(manifestDir);
            string manifestFullPath = Path.Combine(manifestDir, ManifestFileName);

            manifestCache.LoadManifest(manifestFullPath);

            // Create the table name prefix
            TableNamePrefix = String.Concat("CIT", Guid.NewGuid().ToString("N"));

            // Create the test data directory
            const string testDataDirectoryName = "AzureTableUploader.Test.Data";

            testDataDirectory = Path.Combine(Directory.GetCurrentDirectory(), testDataDirectoryName);
            Directory.CreateDirectory(testDataDirectory);

            var accountKey        = GetTestStorageAccountKey();
            var escapedAccountKey = accountKey.Replace("=", @"\=");

            // Create the config file for the test
            string configFileFullPath = Path.Combine(
                testDataDirectory,
                configFileName);
            string configFileContentsFormatted = String.Format(
                CultureInfo.InvariantCulture,
                configFileContents,
                accountName,
                escapedAccountKey,
                TableNamePrefix,
                EntityDeletionAgeMinutes,
                ManifestFileName);

            byte[] configFileBytes = Encoding.ASCII.GetBytes(configFileContentsFormatted);
            File.WriteAllBytes(configFileFullPath, configFileBytes);
            Environment.SetEnvironmentVariable("FabricConfigFileName", configFileFullPath);

            // Initialize config store
            Utility.InitializeConfigStore((IConfigStoreUpdateHandler)null);

            Utility.InitializeTracing();
            Utility.TraceSource = new FabricEvents.ExtensionsEvents(FabricEvents.Tasks.FabricDCA);

            HealthClient.Disabled = true;

            Utility.TraceSource.WriteInfo(
                TraceType,
                "Table name prefix: {0}",
                TableNamePrefix);

            // Create the table client
            StorageCredentials  credentials    = new StorageCredentials(accountName, accountKey);
            CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

            tableClient = storageAccount.CreateCloudTableClient();
        }