private void t02_Folder(CMISTestSystem con)
        {
            initializeClient(con);
            CMISFolder root = cmisClient.GetRootFolder();

            Assert.AreEqual(con.RootFolder, root.DisplayName);
            cmisClient.GetRootFolder().GetAllSubFolders().Count();

            CMISFolder sub = cmisClient.GetFolderFromPath(con.SubFolder);

            Assert.AreEqual(con.SubFolder.Split('/').Last(), sub.DisplayName);

            CMISFolder sub1 = cmisClient.GetSubfolder(sub, sieeSubPath, con.FolderType);
            CMISFolder sub3 = cmisClient.GetSubfolder(sub, sieeSubPath + "/sub2/sub3", con.FolderType);
            CMISFolder sub4 = cmisClient.GetSubfolder(sub, sieeSubPath + "/sub2/sub4", con.FolderType);
            CMISFolder sub2 = cmisClient.GetFolderFromPath(con.SubFolder + "/" + sieeSubPath + "/" + "sub2");

            Assert.AreEqual(2, sub2.GetAllSubFolders().Count());

            cmisClient.DeleteFolder(sub4);
            cmisClient.DeleteFolder(sub3);
            cmisClient.DeleteFolder(sub2);
            deleteDocument(sub1, documentName);
            cmisClient.DeleteFolder(sub1);
        }
 private List <CMISRepository> loadRepositories(CMISTestSystem con)
 {
     cmisClient.ServerURL     = con.ServerURL;
     cmisClient.TypeOfBinding = con.TypeOfBinding;
     cmisClient.Username      = con.Username;
     cmisClient.Password      = con.Password;
     return(cmisClient.LoadRepositories());
 }
        private void t01_Repositories(CMISTestSystem con)
        {
            List <CMISRepository> repositories = loadRepositories(con);

            Assert.AreEqual(con.NumberOfRepositories, repositories.Count());
            Assert.IsTrue(repositories.Where(n => n.Id == con.Repository).Count() == 1);
            cmisClient.SelectRepository(con.Repository);
            Assert.AreEqual(con.SupportedVersion, cmisClient.GetSupportedVersion());
        }
        private void t05_Versionable(CMISTestSystem con)
        {
            if (!con.VersionableTest)
            {
                return;
            }

            initializeClient(con);
            CMISType type = cmisClient.GetTypeFromId(con.TypesType);

            Assert.IsTrue(type.Versionable != true);
            type = cmisClient.GetTypeFromId(con.VersioningType);
            Assert.IsTrue(type.Versionable == true);
        }
        private void t04_Documents(CMISTestSystem con)
        {
            initializeClient(con);
            string checkinComment = "Test check-in comment";

            CMISFolder folder = cmisClient.GetFolderFromPath(con.SubFolder);

            folder = cmisClient.GetSubfolder(folder, sieeSubPath, con.FolderType);

            CMISType type = cmisClient.GetTypeFromId(con.StoreType);

            deleteDocument(folder, documentName);
            storeAndVerifyDocument(folder, documentName, type, con.Properties);

            if (con.VersioningType != null)
            {
                CMISDocument cmisDocument;
                deleteDocument(folder, documentName);
                Dictionary <string, object> props = new Dictionary <string, object>();
                props["cmis:objectTypeId"] = cmisClient.GetTypeFromId(con.VersioningType).Id;

                cmisClient.StoreDocument(folder, sampleDocument, documentName, props, true);
                cmisDocument = cmisClient.GetDocument(folder, documentName);
                Assert.AreEqual(con.V1_Major, getVersionString(cmisDocument));

                cmisClient.UpdateDocument(folder, sampleDocument, documentName, props, true, checkinComment);
                cmisDocument = cmisClient.GetObjectOfLatestVersion(cmisDocument, major: true);
                Assert.AreEqual(con.V2_Major, getVersionString(cmisDocument));
                Assert.AreEqual(checkinComment, cmisClient.GetCheckinComent(cmisDocument));

                if (con.SupportsMinorVersions)
                {
                    deleteDocument(folder, documentName);
                    cmisClient.StoreDocument(folder, sampleDocument, documentName, props, false);
                    cmisDocument = cmisClient.GetDocument(folder, documentName);
                    Assert.AreEqual(con.V1_Minor, getVersionString(cmisDocument));

                    cmisClient.UpdateDocument(folder, sampleDocument, documentName, props, false, checkinComment);
                    cmisDocument = cmisClient.GetObjectOfLatestVersion(cmisDocument, major: false);
                    Assert.AreEqual(con.V2_Minor, getVersionString(cmisDocument));
                    Assert.AreEqual(checkinComment, cmisClient.GetCheckinComent(cmisDocument));
                }
            }

            deleteDocument(folder, documentName);
            cmisClient.DeleteFolder(folder);
        }
        private void t06_Performance(CMISTestSystem con)
        {
            if (!runPerformaceTest)
            {
                return;
            }

            initializeClient(con);
            string documentName = "Sample document";
            string folderName   = con.SubFolder + "/" + sieeSubPath;

            CMISFolder folder = cmisClient.GetSubfolder(cmisClient.GetRootFolder(), folderName, con.FolderType);
            CMISType   type   = cmisClient.GetTypeFromId(con.StoreType);

            deleteDocument(folder, documentName);

            // pre-upload a few documents to warm up the system ...
            for (int i = 0; i != 5; i++)
            {
                doOneDocument(folder, documentName, type, con);
            }

            // do the real test
            Process p         = Process.GetCurrentProcess();
            long    memBefore = p.PeakWorkingSet64 / 1000;
            int     nofCycles = 100;

            int[] times = new int[nofCycles];
            for (int i = 0; i != nofCycles; i++)
            {
                DateTime start = DateTime.Now;
                doOneDocument(folder, documentName, type, con);
                times[i] = (int)(DateTime.Now - start).TotalMilliseconds;
                Console.WriteLine(i + " = " + times[i]);
            }
            long memAfter = p.PeakWorkingSet64 / 1000;

            Assert.AreEqual(memBefore, memAfter);
            Assert.AreEqual(true, nofCycles > 20);
            double avgStart  = average(times, 0, 9);
            double avgEnd    = average(times, nofCycles - 10, nofCycles - 1);
            double deviation = Math.Abs(avgEnd - avgStart) / avgStart;

            Assert.AreEqual(true, deviation <= .25, "deviates (avgStart=" + avgStart + " ,avgEnd=" + avgEnd + ")");
        }
        private void t03_Types(CMISTestSystem con)
        {
            initializeClient(con);
            CMISType root = cmisClient.GetRootType();

            Assert.AreEqual(con.RootType, root.Id);

            CMISType            type  = cmisClient.GetTypeFromId(con.TypesType);
            List <CMISProperty> props = cmisClient.GetPropertyDefinitions(type);

            Assert.AreEqual(con.NumberOfProperties, props.Count);
            foreach (CMISProperty p in con.ExpectedProperties)
            {
                CMISProperty p1 = props.Where(n => n.Id == p.Id).First();
                Assert.AreEqual(p.DisplayName, p1.DisplayName);
                Assert.AreEqual(p.Type, p1.Type);
            }
        }
 private void doOneDocument(CMISFolder folder, string documentName, CMISType type, CMISTestSystem con)
 {
     storeAndVerifyDocument(folder, documentName, type, con.Properties);
     deleteDocument(folder, documentName);
 }
 private void initializeClient(CMISTestSystem con)
 {
     loadRepositories(con);
     cmisClient.SelectRepository(con.Repository);
 }