Пример #1
0
        public async Task VerifyThatReadReturnsCorrectDTO()
        {
            this.dal = new WspDal();

            var returned = (await this.dal.Open(this.credentials, this.cancelationTokenSource.Token)).ToList();

            Assert.NotNull(returned);
            Assert.IsNotEmpty(returned);

            var sd = returned.First();

            var attributes = new QueryAttributes();
            var readResult = await dal.Read(sd, this.cancelationTokenSource.Token, attributes);

            // General assertions for any kind of Thing we read
            Assert.NotNull(readResult);
            Assert.IsTrue(readResult.Count() == 1);
            var sd1 = readResult.Single();

            Assert.IsTrue(sd.ClassKind == sd1.ClassKind);
            Assert.IsTrue(sd.Iid == sd1.Iid);
            Assert.IsTrue(sd.Route == sd1.Route);

            // Specific assertions for Sitedirectory ClassKind
            var castedSd  = sd as CDP4Common.DTO.SiteDirectory;
            var castedSd1 = sd as CDP4Common.DTO.SiteDirectory;

            Assert.NotNull(castedSd);
            Assert.NotNull(castedSd1);
            Assert.IsTrue(castedSd.Name == castedSd1.Name);
            Assert.IsTrue(castedSd.Domain.Count == castedSd1.Domain.Count);
            Assert.IsTrue(castedSd.SiteReferenceDataLibrary == castedSd1.SiteReferenceDataLibrary);
            Assert.IsTrue(castedSd.Model == castedSd1.Model);
        }
Пример #2
0
        public async Task AssemblerSynchronizePerformanceTest()
        {
            this.dal = new WspDal();

            var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token);

            var       returnedlist    = returned.ToList();
            const int iterationNumber = 1000;
            var       elapsedTimes    = new List <long>();

            for (int i = 0; i < iterationNumber; i++)
            {
                var assemble  = new Assembler(this.uri);
                var stopwatch = Stopwatch.StartNew();
                await assemble.Synchronize(returnedlist);

                elapsedTimes.Add(stopwatch.ElapsedMilliseconds);
                await assemble.Clear();
            }

            var synchronizeMeanElapsedTime = elapsedTimes.Average();
            var maxElapsedTime             = elapsedTimes.Max();
            var minElapsedTime             = elapsedTimes.Min();
            // 204.64 | 181 | 458 ms
            // refactor: 31.61 | 26 | 283
        }
Пример #3
0
        public async Task VerifyThatReadIterationWorks()
        {
            var dal = new WspDal {
                Session = this.session
            };
            var credentials = new Credentials("admin", "pass", new Uri("https://cdp4services-public.cdp4.org"));
            var session     = new Session(dal, credentials);

            var returned = await dal.Open(credentials, this.cancelationTokenSource.Token);

            await session.Assembler.Synchronize(returned);

            var siteDir        = session.Assembler.RetrieveSiteDirectory();
            var modelSetup     = siteDir.Model.Single(x => x.ShortName == "LOFT");
            var iterationSetup = modelSetup.IterationSetup.First();

            var openCount = session.Assembler.Cache.Count;

            var model     = new EngineeringModel(modelSetup.EngineeringModelIid, null, null);
            var iteration = new Iteration(iterationSetup.IterationIid, null, null);

            iteration.Container = model;

            var modelDtos = await dal.Read((CDP4Common.DTO.Iteration) iteration.ToDto(), this.cancelationTokenSource.Token);

            await session.Assembler.Synchronize(modelDtos);

            var readCount = session.Assembler.Cache.Count;

            Assert.IsTrue(readCount > openCount);
        }
        public async Task Verify_that_person_can_be_Posted()
        {
            var wspdal = new WspDal();
            var dtos   = await wspdal.Open(this.credentials, this.cancelationTokenSource.Token);

            var siteDirectory = (CDP4Common.DTO.SiteDirectory)dtos.Single(x => x.ClassKind == ClassKind.SiteDirectory);

            var context            = siteDirectory.Route;
            var operationContainer = new OperationContainer(context, siteDirectory.RevisionNumber);

            var person = new CDP4Common.DTO.Person(Guid.NewGuid(), 1);

            person.ShortName = Guid.NewGuid().ToString();
            person.Surname   = Guid.NewGuid().ToString();
            person.GivenName = Guid.NewGuid().ToString();
            person.AddContainer(ClassKind.SiteDirectory, siteDirectory.Iid);

            var operation1 = new Operation(null, person, OperationKind.Create);

            operationContainer.AddOperation(operation1);

            var siteDirectoryClone = siteDirectory.DeepClone <CDP4Common.DTO.SiteDirectory>();

            siteDirectoryClone.Person.Add(person.Iid);
            var operation2 = new Operation(siteDirectory, siteDirectoryClone, OperationKind.Update);

            operationContainer.AddOperation(operation2);

            var result = await wspdal.Write(operationContainer);

            var resultPerson = (CDP4Common.DTO.Person)result.Single(x => x.Iid == person.Iid);

            Assert.NotNull(resultPerson);
        }
Пример #5
0
        public async Task VerifyThatIfNotHttpOrHttpsExceptionIsThrown()
        {
            var uri = new Uri("file://somefile");
            var invalidCredentials = new Credentials("John", "a password", uri);

            var dal = new WspDal();

            Assert.That(async() => await dal.Open(invalidCredentials, new CancellationToken()), Throws.TypeOf <ArgumentException>());
        }
Пример #6
0
        public async Task VerifThatAClosedDalCannotBeClosedAgain()
        {
            var dal = new WspDal();
            await dal.Open(this.credentials, new CancellationToken());

            dal.Close();

            Assert.Throws <InvalidOperationException>(() => dal.Close());
        }
Пример #7
0
        public async Task VerifyThatIfCredentialsAreNullOnReadExceptionIsThrown()
        {
            var organizationIid = Guid.Parse("44d1ff16-8195-47d0-abfa-163bbba9bf39");
            var organizationDto = new CDP4Common.DTO.Organization(organizationIid, 0);

            organizationDto.AddContainer(ClassKind.SiteDirectory, Guid.Parse("eb77f3e1-a0f3-412d-8ed6-b8ce881c0145"));

            var dal = new WspDal();

            Assert.That(async() => await dal.Read(organizationDto, new CancellationToken()), Throws.TypeOf <InvalidOperationException>());
        }
Пример #8
0
        public async Task Vefify_that_when_OperationContainer_is_empty_an_empty_is_returned()
        {
            var dal = new WspDal();

            this.SetDalToBeOpen(dal);

            var context            = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}";
            var operationContainer = new OperationContainer(context);

            Assert.That(await dal.Write(operationContainer), Is.Empty);
        }
Пример #9
0
        public async Task Verify_that_opens_returns_expected_result()
        {
            var uri = new Uri("http://ocdt-dev.rheagroup.com");

            this.credentials = new Credentials("admin", "pass", uri);

            var wspdal = new WspDal();
            var result = await wspdal.Open(this.credentials, new CancellationToken());

            Assert.NotNull(result);
        }
        public async Task Verify_That_Session_Open_Populates_cache()
        {
            var dal = new WspDal();

            this.session = new Session(dal, this.credentials);

            Assert.AreEqual(0, this.session.Assembler.Cache.Count);

            await session.Open();

            Assert.AreNotEqual(0, this.session.Assembler.Cache.Count);
        }
Пример #11
0
        public void SetUp()
        {
            this.cancelationTokenSource = new CancellationTokenSource();

            this.credentials = new Credentials("admin", "pass", this.uri);
            this.dal         = new WspDal();
            this.session     = new Session(this.dal, this.credentials);

            // Add SiteDirectory to cache
            this.siteDirectory = new SiteDirectory(Guid.Parse("f13de6f8-b03a-46e7-a492-53b2f260f294"), this.session.Assembler.Cache, this.uri);
            var lazySiteDirectory = new Lazy <Thing>(() => this.siteDirectory);

            lazySiteDirectory.Value.Cache.TryAdd(new CacheKey(lazySiteDirectory.Value.Iid, null), lazySiteDirectory);

            this.PopulateSiteDirectory();
        }
Пример #12
0
        public async Task VerifyThatOpenReturnsDTOs()
        {
            var uriBuilder = new UriBuilder(this.credentials.Uri)
            {
                Path = "/Data/Restore"
            };
            var httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes($"{credentials.UserName}:{credentials.Password}")));
            await httpClient.PostAsync(uriBuilder.Uri, null);

            var dal    = new WspDal();
            var result = await dal.Open(this.credentials, new CancellationToken());

            var amountOfDtos = result.ToList().Count;

            Assert.AreEqual(60, amountOfDtos);
        }
Пример #13
0
        public void VerifyThatWritingMultipleOperationContainersIsNotSupported()
        {
            var dal = new WspDal();

            this.SetDalToBeOpen(dal);

            var contextOne = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}";
            var contextTwo = $"/EngineeringModel/{Guid.NewGuid()}/iteration/{Guid.NewGuid()}";

            var operationContainerOne = new OperationContainer(contextOne);
            var operationContainerTwo = new OperationContainer(contextTwo);

            var operationContainers = new List <OperationContainer> {
                operationContainerOne, operationContainerTwo
            };

            Assert.Throws <NotSupportedException>(() => dal.Write(operationContainers));

            Assert.Throws <NotSupportedException>(() => dal.Write(operationContainers));
        }
Пример #14
0
        public async Task IntegrationTest()
        {
            this.dal = new WspDal();
            var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token);

            var assembler = new Assembler(this.credentials.Uri);

            await assembler.Synchronize(returned);

            var attributes = new DalQueryAttributes {
                RevisionNumber = 0
            };
            var topcontainers = assembler.Cache.Select(x => x.Value).Where(x => x.Value is CDP4Common.CommonData.TopContainer).ToList();

            foreach (var container in topcontainers)
            {
                returned = await this.dal.Read(container.Value.ToDto(), this.cancelationTokenSource.Token, attributes);

                await assembler.Synchronize(returned);
            }
        }
Пример #15
0
        public async Task Verify_that_person_can_be_Posted()
        {
            var uri         = new Uri("http://ocdt-dev.rheagroup.com");
            var credentials = new Credentials("admin", "pass", uri);

            var wspdal = new WspDal();
            var dtos   = await wspdal.Open(credentials, this.cancelationTokenSource.Token);

            var siteDirectory = (CDP4Common.DTO.SiteDirectory)dtos.Single(x => x.ClassKind == ClassKind.SiteDirectory);

            var context            = siteDirectory.Route;
            var operationContainer = new OperationContainer(context, siteDirectory.RevisionNumber);

            var person = new CDP4Common.DTO.Person(Guid.NewGuid(), 1);

            person.ShortName = Guid.NewGuid().ToString();
            person.Surname   = Guid.NewGuid().ToString();
            person.GivenName = Guid.NewGuid().ToString();
            person.AddContainer(ClassKind.SiteDirectory, Guid.Parse("eb77f3e1-a0f3-412d-8ed6-b8ce881c0145"));

            var operation1 = new Operation(null, person, OperationKind.Create);

            operationContainer.AddOperation(operation1);

            var siteDirectoryClone = siteDirectory.DeepClone <CDP4Common.DTO.SiteDirectory>();

            siteDirectoryClone.Person.Add(person.Iid);
            var operation2 = new Operation(siteDirectory, siteDirectoryClone, OperationKind.Update);

            operationContainer.AddOperation(operation2);

            var result = await wspdal.Write(operationContainer);

            var resultPerson = (CDP4Common.DTO.Person)result.Single(x => x.Iid == person.Iid);

            Assert.NotNull(resultPerson);
        }
Пример #16
0
        /// <summary>
        /// Set the credentials property so DAL appears to be open
        /// </summary>
        /// <param name="dal">
        /// The <see cref="WspDal"/> that is to be opened
        /// </param>
        private void SetDalToBeOpen(WspDal dal)
        {
            var credentialsProperty = typeof(WspDal).GetProperty("Credentials");

            credentialsProperty.SetValue(dal, this.credentials);
        }
Пример #17
0
 public void TearDown()
 {
     CDPMessageBus.Current.ClearSubscriptions();
     this.credentials = null;
     this.dal         = null;
 }
Пример #18
0
        public void VerifyThatCdpServicesDalCanBeConstructed()
        {
            var dal = new WspDal();

            Assert.IsNotNull(dal);
        }
Пример #19
0
        public async Task VerifyThatFileCanBeUploaded()
        {
            this.dal = new WspDal {
                Session = this.session
            };

            var filename  = @"TestData\testfile.pdf";
            var directory = TestContext.CurrentContext.TestDirectory;
            var filepath  = Path.Combine(directory, filename);
            var files     = new List <string> {
                filepath
            };

            var contentHash = "F73747371CFD9473C19A0A7F99BCAB008474C4CA";
            var uri         = new Uri("https://cdp4services-test.cdp4.org");

            this.credentials = new Credentials("admin", "pass", uri);

            var returned = await this.dal.Open(this.credentials, this.cancelationTokenSource.Token);

            var engineeringModeliid  = Guid.Parse("9ec982e4-ef72-4953-aa85-b158a95d8d56");
            var iterationiid         = Guid.Parse("e163c5ad-f32b-4387-b805-f4b34600bc2c");
            var domainFileStoreIid   = Guid.Parse("da7dddaa-02aa-4897-9935-e8d66c811a96");
            var fileIid              = Guid.NewGuid();
            var fileRevisionIid      = Guid.NewGuid();
            var domainOfExpertiseIid = Guid.Parse("0e92edde-fdff-41db-9b1d-f2e484f12535");
            var fileTypeIid          = Guid.Parse("b16894e4-acb5-4e81-a118-16c00eb86d8f"); //PDF
            var participantIid       = Guid.Parse("284334dd-e8e5-42d6-bc8a-715c507a7f02");

            var originalDomainFileStore = new CDP4Common.DTO.DomainFileStore(domainFileStoreIid, 0);

            originalDomainFileStore.AddContainer(ClassKind.Iteration, iterationiid);
            originalDomainFileStore.AddContainer(ClassKind.EngineeringModel, engineeringModeliid);

            var modifiedDomainFileStore = new CDP4Common.DTO.DomainFileStore(domainFileStoreIid, 0);

            modifiedDomainFileStore.File.Add(fileIid);
            modifiedDomainFileStore.AddContainer(ClassKind.Iteration, iterationiid);
            modifiedDomainFileStore.AddContainer(ClassKind.EngineeringModel, engineeringModeliid);

            var file = new CDP4Common.DTO.File(fileIid, 0)
            {
                Owner = domainOfExpertiseIid
            };

            file.FileRevision.Add(fileRevisionIid);
            file.AddContainer(ClassKind.DomainFileStore, domainFileStoreIid);
            file.AddContainer(ClassKind.Iteration, iterationiid);
            file.AddContainer(ClassKind.EngineeringModel, engineeringModeliid);

            var fileRevision = new CDP4Common.DTO.FileRevision(fileRevisionIid, 0);

            fileRevision.Name        = "testfile";
            fileRevision.ContentHash = contentHash;
            fileRevision.FileType.Add(new OrderedItem()
            {
                K = 1, V = fileTypeIid
            });
            fileRevision.Creator = participantIid;
            fileRevision.AddContainer(ClassKind.File, fileIid);
            fileRevision.AddContainer(ClassKind.DomainFileStore, domainFileStoreIid);
            fileRevision.AddContainer(ClassKind.Iteration, iterationiid);
            fileRevision.AddContainer(ClassKind.EngineeringModel, engineeringModeliid);

            var context            = $"/EngineeringModel/{engineeringModeliid}/iteration/{iterationiid}";
            var operationContainer = new OperationContainer(context);

            var updateCommonFileStoreOperation = new Operation(originalDomainFileStore, modifiedDomainFileStore, OperationKind.Update);

            operationContainer.AddOperation(updateCommonFileStoreOperation);

            var createFileOperation = new Operation(null, file, OperationKind.Create);

            operationContainer.AddOperation(createFileOperation);

            var createFileRevisionOperation = new Operation(null, fileRevision, OperationKind.Create);

            operationContainer.AddOperation(createFileRevisionOperation);

            Assert.DoesNotThrowAsync(async() => await dal.Write(operationContainer, files));
        }
Пример #20
0
        public async Task VerifyThatIfCredentialsAreNullExceptionIsThrown()
        {
            var dal = new WspDal();

            Assert.That(async() => await dal.Open(null, new CancellationToken()), Throws.TypeOf <ArgumentNullException>());
        }