Example #1
0
        public async Task CopyFromGRIDWithTwoOptions()
        {
            // Make sure it finds a 3 step routing, from CERN, to the tev machines, back to a local.
            var loc1 = new DummyPlace("LocalDisk")
            {
                IsLocal = true, NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("tev")
            {
                IsLocal = false, DataTier = 10, CanSourceACopy = true, NeedsConfirmationCopy = false
            };
            var loc3 = new DummyPlace("tev-GRID")
            {
                IsLocal = false, DataTier = 100, CanSourceACopy = true, NeedsConfirmationCopy = false
            };
            var loc4 = new DummyPlace("cern")
            {
                IsLocal = false, DataTier = 10, CanSourceACopy = true, NeedsConfirmationCopy = false
            };
            var loc5 = new DummyPlace("cern-GRID")
            {
                IsLocal = false, DataTier = 100, CanSourceACopy = true, NeedsConfirmationCopy = false
            };

            // The tev-GRID can copy only to tev
            loc3.ExplicitlyNotAllowed.Add(loc1);
            loc3.ExplicitlyNotAllowed.Add(loc4);
            loc3.ExplicitlyNotAllowed.Add(loc5);

            // tev-CERN can copy only to cern
            loc5.ExplicitlyNotAllowed.Add(loc1);
            loc5.ExplicitlyNotAllowed.Add(loc2);
            loc5.ExplicitlyNotAllowed.Add(loc3);

            // loc1 can only access tev and cern
            loc1.ExplicitlyNotAllowed.Add(loc3);
            loc1.ExplicitlyNotAllowed.Add(loc5);

            // loc1 can only source a copy
            loc2.ExplicitlyNotAllowed.Add(loc1);
            loc4.ExplicitlyNotAllowed.Add(loc1);

            loc3.Add("ds1", "f1", "f2");
            loc5.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2, loc3, loc4, loc5);

            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds1");

            var localFiles = await MakeFilesLocalAsync(files);

            Assert.AreEqual(2, localFiles.Length);

            foreach (var c in DummyPlace.CopyLogs)
            {
                Console.WriteLine(c);
            }
            Assert.AreEqual(2, DummyPlace.CopyLogs.Count);
            Assert.AreEqual("*tev-GRID -> tev (2 files)", DummyPlace.CopyLogs[0]);
            Assert.AreEqual("tev -> *LocalDisk (2 files)", DummyPlace.CopyLogs[1]);
        }
Example #2
0
        public async Task CopyFromSourceToDestButFilesThere()
        {
            var loc1 = new DummyPlace("bogusLocal")
            {
                NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("bogusNonLocal")
            {
                IsLocal = false, DataTier = 10
            };

            loc1.Add("ds1", "f1", "f2");
            loc1.BlockHasFileFor("f1");
            loc2.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2);
            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds1");

            var localFiles = await DataSetManager.CopyFilesAsync(loc2, loc1, files);

            Assert.IsNotNull(localFiles);
            Assert.AreEqual(2, localFiles.Length);
            Assert.AreEqual(@"c:\junk\f1.txt", localFiles[0].OriginalString);
            Assert.AreEqual(@"c:\junk\f2.txt", localFiles[1].OriginalString);

            Assert.AreEqual(1, DummyPlace.CopyLogs.Count);
            Assert.AreEqual("bogusNonLocal -> *bogusLocal (1 files)", DummyPlace.CopyLogs[0]);
        }
Example #3
0
        public async Task LocalPartialDatasetQueryForcesOtherQueries()
        {
            var p1 = new DummyPlace("bogusLocal")
            {
                { "ds1", "f1", "f2" }
            };

            p1.IsLocal  = true;
            p1.DataTier = 1;
            p1.NeedsConfirmationCopy = false;
            p1.CanSourceACopy        = true;
            p1.BlockHasFileFor("f2");
            var p2 = new DummyPlace("bogusRemote")
            {
                { "ds1", "f1", "f2" }
            };

            p2.IsLocal  = false;
            p2.DataTier = 10;
            DataSetManager.ResetDSM(p1, p2);

            await DataSetManager.MakeFilesLocalAsync(new Uri[] { new Uri("gridds://ds1/f2") });

            Assert.AreEqual(0, p2.GetListOfFilesForDatasetCalled);
            Assert.AreEqual(1, p2.HasFileCalled);
        }
Example #4
0
        public void CanNotSourceCopyToNonISCPTarget()
        {
            var p     = new PlaceLinuxRemote("test", _ssh.RemotePath, _ssh.RemoteHostInfo);
            var other = new DummyPlace("testmeout");

            DataSetManager.ResetDSM(p, other);

            Assert.IsFalse(p.CanSourceCopy(other));
        }
Example #5
0
        public void CantCopyFromAnotherTypeOfRepro()
        {
            var repro1 = BuildRepro("repro1");

            BuildDatset(repro1, "ds1", "f1.root", "f2.root");

            var place1 = new PlaceLocalWindowsDisk("test1", repro1);
            var place2 = new DummyPlace("dork");

            Assert.IsFalse(place1.CanSourceCopy(place2));
        }
Example #6
0
        public async Task DSMgrGetListOfFilesFromBadDS()
        {
            var loc1 = new DummyPlace("bogusLocal")
            {
                NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("bogusNonLocal")
            {
                IsLocal = false, DataTier = 10
            };

            loc2.Add("ds1", "f1", "f2");

            DataSetManager.ResetDSM(loc1, loc2);
            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds2");
        }
Example #7
0
        public async Task CopyToLocalWithNoNonConfirmLocalAvailable()
        {
            var loc1 = new DummyPlace("bogusLocal")
            {
                NeedsConfirmationCopy = true, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("bogusNonLocal")
            {
                IsLocal = false, DataTier = 10
            };

            loc2.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2);
            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds1");

            var localFiles = await DataSetManager.MakeFilesLocalAsync(files);
        }
Example #8
0
        public async Task CopyToLocalWithoutConfirm()
        {
            var loc1 = new DummyPlace("l1")
            {
                IsLocal = true, NeedsConfirmationCopy = true, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("l2")
            {
                IsLocal = true, NeedsConfirmationCopy = true, CanSourceACopy = true
            };

            loc1.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2);
            var f = await DataSetManager.CopyFilesToAsync(loc2, await DataSetManager.ListOfFilesInDataSetAsync("ds1"));

            Assert.AreEqual(2, f.Length);
            Assert.AreEqual(1, DummyPlace.CopyLogs.Count);
            Assert.AreEqual("*l1 -> l2 (2 files)", DummyPlace.CopyLogs[0]);
        }
Example #9
0
        public async Task LocalDatasetQueryDoesNotForceOtherQueries()
        {
            var p1 = new DummyPlace("bogusLocal")
            {
                { "ds1", "f1", "f2" }
            };

            p1.IsLocal  = true;
            p1.DataTier = 1;
            var p2 = new DummyPlace("bogusRemote")
            {
                { "ds1", "f1", "f2" }
            };

            p2.IsLocal  = false;
            p2.DataTier = 10;
            DataSetManager.ResetDSM(p1, p2);

            await DataSetManager.MakeFilesLocalAsync(new Uri[] { new Uri("gridds://ds1/f1") });

            Assert.AreEqual(0, p2.GetListOfFilesForDatasetCalled);
            Assert.AreEqual(0, p2.HasFileCalled);
        }
Example #10
0
        public async Task CopyFromFireWalledPlace()
        {
            // Make sure it finds a 3 step routing, from CERN, to the tev machines, back to a local.
            var loc1 = new DummyPlace("LocalDisk")
            {
                IsLocal = true, NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("tev")
            {
                IsLocal = false, DataTier = 10, CanSourceACopy = true, NeedsConfirmationCopy = false
            };
            var loc3 = new DummyPlace("CERN")
            {
                IsLocal = false, DataTier = 10, CanSourceACopy = true, NeedsConfirmationCopy = false
            };

            loc1.ExplicitlyNotAllowed.Add(loc3);
            loc2.ExplicitlyNotAllowed.Add(loc3);
            loc2.ExplicitlyNotAllowed.Add(loc1);
            loc3.ExplicitlyNotAllowed.Add(loc1);

            loc3.Add("ds1", "f1", "f2");
            DataSetManager.ResetDSM(loc1, loc2, loc3);
            var files = await DataSetManager.ListOfFilesInDataSetAsync("ds1");

            var localFiles = await MakeFilesLocalAsync(files);

            Assert.AreEqual(2, localFiles.Length);

            foreach (var c in DummyPlace.CopyLogs)
            {
                Console.WriteLine(c);
            }
            Assert.AreEqual(2, DummyPlace.CopyLogs.Count);
            Assert.AreEqual("*CERN -> tev (2 files)", DummyPlace.CopyLogs[0]);
            Assert.AreEqual("tev -> *LocalDisk (2 files)", DummyPlace.CopyLogs[1]);
        }
Example #11
0
        public async Task CopyToLocalFromMultipleDatasets()
        {
            var loc1 = new DummyPlace("bogusLocal")
            {
                NeedsConfirmationCopy = false, CanSourceACopy = true
            };
            var loc2 = new DummyPlace("bogusNonLocal")
            {
                IsLocal = false, DataTier = 10
            };

            loc2.Add("ds1", "f1", "f2");
            loc2.Add("ds2", "f3", "f4");
            DataSetManager.ResetDSM(loc1, loc2);
            var files = (await DataSetManager.ListOfFilesInDataSetAsync("ds1"))
                        .Concat(await DataSetManager.ListOfFilesInDataSetAsync("ds2")).ToArray();
            var localFiles = await DataSetManager.MakeFilesLocalAsync(files);

            Assert.AreEqual(4, localFiles.Length);
            Assert.AreEqual(@"c:\junk\f1.txt", localFiles[0].OriginalString);
            Assert.AreEqual(@"c:\junk\f2.txt", localFiles[1].OriginalString);
            Assert.AreEqual(@"c:\junk\f3.txt", localFiles[2].OriginalString);
            Assert.AreEqual(@"c:\junk\f4.txt", localFiles[3].OriginalString);
        }