Esempio n. 1
0
        public void ProcessRuntimeDescriptorSaveTest()
        {
            AssemblyServiceRepository repo = GetAssemblyManagementRepository(GetConsoleLogger(), nameof(ProcessRuntimeDescriptorSaveTest));

            repo.SetDaoNamespace <ProcessRuntimeDescriptor>();
            repo.Database.TryEnsureSchema <Dao.AssemblyDescriptor>();
            List <AssemblyDescriptor> descriptors = AssemblyDescriptor.GetCurrentAppDomainDescriptors().ToList();
            ProcessRuntimeDescriptor  current     = ProcessRuntimeDescriptor.PersistCurrentToRepo(repo);

            Expect.AreEqual(descriptors.Count, current.AssemblyDescriptors.Length, "Number of descriptors didn't match");

            ProcessRuntimeDescriptor retrieved = repo.Retrieve <ProcessRuntimeDescriptor>(current.Id);

            Expect.AreEqual(descriptors.Count, retrieved.AssemblyDescriptors.Length, "Number of retrieved descriptors didn't match");

            foreach (AssemblyDescriptor descriptor in retrieved.AssemblyDescriptors)
            {
                AssemblyDescriptor retrievedDescriptor = repo.Retrieve <AssemblyDescriptor>(descriptor.Uuid);
                OutLineFormat("Checking {0}", ConsoleColor.DarkBlue, retrievedDescriptor.AssemblyFullName);
                AssemblyDescriptor actual = descriptors.FirstOrDefault(d =>
                                                                       d.Name.Equals(retrievedDescriptor.Name) &&
                                                                       d.FileHash.Equals(retrievedDescriptor.FileHash) &&
                                                                       d.AssemblyFullName.Equals(retrievedDescriptor.AssemblyFullName)
                                                                       );

                Expect.AreEqual(actual.AssemblyReferenceDescriptors?.Count, retrievedDescriptor.AssemblyReferenceDescriptors?.Count);
                OutLineFormat("ProcessRuntimeDescriptors count {0}", retrievedDescriptor.ProcessRuntimeDescriptors.Count);
            }
        }
Esempio n. 2
0
        public void SaveDescriptorSavesReferences()
        {
            AssemblyServiceRepository repo = GetAssemblyManagementRepository(GetConsoleLogger(), nameof(SaveDescriptorDoesntDuplicate));

            repo.Database.TryEnsureSchema <Dao.AssemblyDescriptor>();
            AssemblyDescriptor[] descriptors = AssemblyDescriptor.GetCurrentAppDomainDescriptors().ToArray();
            for (int i = 0; i < 3; i++)
            {
                foreach (AssemblyDescriptor descriptor in descriptors)
                {
                    int?referenceCount = descriptor.AssemblyReferenceDescriptors?.Count;
                    if (referenceCount > 0)
                    {
                        AssemblyDescriptor wrapped   = repo.Save(descriptor);
                        AssemblyDescriptor retrieved = repo.Retrieve <AssemblyDescriptor>(wrapped.Id);
                        Expect.AreEqual(referenceCount, retrieved.AssemblyReferenceDescriptors?.Count);
                        Pass(descriptor.AssemblyFullName);
                    }
                    else
                    {
                        OutLineFormat("No references: {0}", ConsoleColor.Cyan, descriptor.AssemblyFullName);
                    }
                }
            }
        }