internal static ResourceLocalizationSpec GetMockRsrc(Random r, LocalResourceVisibility vis, Path p) { ResourceLocalizationSpec resourceLocalizationSpec = Org.Mockito.Mockito.Mock <ResourceLocalizationSpec >(); LocalResource rsrc = Org.Mockito.Mockito.Mock <LocalResource>(); string name = long.ToHexString(r.NextLong()); URL uri = Org.Mockito.Mockito.Mock <URL>(); Org.Mockito.Mockito.When(uri.GetScheme()).ThenReturn("file"); Org.Mockito.Mockito.When(uri.GetHost()).ThenReturn(null); Org.Mockito.Mockito.When(uri.GetFile()).ThenReturn("/local/" + vis + "/" + name); Org.Mockito.Mockito.When(rsrc.GetResource()).ThenReturn(uri); Org.Mockito.Mockito.When(rsrc.GetSize()).ThenReturn(r.Next(1024) + 1024L); Org.Mockito.Mockito.When(rsrc.GetTimestamp()).ThenReturn(r.Next(1024) + 2048L); Org.Mockito.Mockito.When(rsrc.GetType()).ThenReturn(LocalResourceType.File); Org.Mockito.Mockito.When(rsrc.GetVisibility()).ThenReturn(vis); Org.Mockito.Mockito.When(resourceLocalizationSpec.GetResource()).ThenReturn(rsrc); Org.Mockito.Mockito.When(resourceLocalizationSpec.GetDestinationDirectory()).ThenReturn (ConverterUtils.GetYarnUrlFromPath(p)); return(resourceLocalizationSpec); }
public virtual void TestContainerLocalizerMain() { FileContext fs = FileContext.GetLocalFSFileContext(); spylfs = Org.Mockito.Mockito.Spy(fs.GetDefaultFileSystem()); ContainerLocalizer localizer = SetupContainerLocalizerForTest(); // verify created cache IList <Path> privCacheList = new AList <Path>(); IList <Path> appCacheList = new AList <Path>(); foreach (Path p in localDirs) { Path @base = new Path(new Path(p, ContainerLocalizer.Usercache), appUser); Path privcache = new Path(@base, ContainerLocalizer.Filecache); privCacheList.AddItem(privcache); Path appDir = new Path(@base, new Path(ContainerLocalizer.Appcache, appId)); Path appcache = new Path(appDir, ContainerLocalizer.Filecache); appCacheList.AddItem(appcache); } // mock heartbeat responses from NM ResourceLocalizationSpec rsrcA = GetMockRsrc(random, LocalResourceVisibility.Private , privCacheList[0]); ResourceLocalizationSpec rsrcB = GetMockRsrc(random, LocalResourceVisibility.Private , privCacheList[0]); ResourceLocalizationSpec rsrcC = GetMockRsrc(random, LocalResourceVisibility.Application , appCacheList[0]); ResourceLocalizationSpec rsrcD = GetMockRsrc(random, LocalResourceVisibility.Private , privCacheList[0]); Org.Mockito.Mockito.When(nmProxy.Heartbeat(Matchers.IsA <LocalizerStatus>())).ThenReturn (new MockLocalizerHeartbeatResponse(LocalizerAction.Live, Sharpen.Collections.SingletonList (rsrcA))).ThenReturn(new MockLocalizerHeartbeatResponse(LocalizerAction.Live, Sharpen.Collections .SingletonList(rsrcB))).ThenReturn(new MockLocalizerHeartbeatResponse(LocalizerAction .Live, Sharpen.Collections.SingletonList(rsrcC))).ThenReturn(new MockLocalizerHeartbeatResponse (LocalizerAction.Live, Sharpen.Collections.SingletonList(rsrcD))).ThenReturn(new MockLocalizerHeartbeatResponse(LocalizerAction.Live, Sharpen.Collections.EmptyList <ResourceLocalizationSpec>())).ThenReturn(new MockLocalizerHeartbeatResponse(LocalizerAction .Die, null)); LocalResource tRsrcA = rsrcA.GetResource(); LocalResource tRsrcB = rsrcB.GetResource(); LocalResource tRsrcC = rsrcC.GetResource(); LocalResource tRsrcD = rsrcD.GetResource(); Org.Mockito.Mockito.DoReturn(new TestContainerLocalizer.FakeDownload(rsrcA.GetResource ().GetResource().GetFile(), true)).When(localizer).Download(Matchers.IsA <Path>() , Matchers.Eq(tRsrcA), Matchers.IsA <UserGroupInformation>()); Org.Mockito.Mockito.DoReturn(new TestContainerLocalizer.FakeDownload(rsrcB.GetResource ().GetResource().GetFile(), true)).When(localizer).Download(Matchers.IsA <Path>() , Matchers.Eq(tRsrcB), Matchers.IsA <UserGroupInformation>()); Org.Mockito.Mockito.DoReturn(new TestContainerLocalizer.FakeDownload(rsrcC.GetResource ().GetResource().GetFile(), true)).When(localizer).Download(Matchers.IsA <Path>() , Matchers.Eq(tRsrcC), Matchers.IsA <UserGroupInformation>()); Org.Mockito.Mockito.DoReturn(new TestContainerLocalizer.FakeDownload(rsrcD.GetResource ().GetResource().GetFile(), true)).When(localizer).Download(Matchers.IsA <Path>() , Matchers.Eq(tRsrcD), Matchers.IsA <UserGroupInformation>()); // run localization NUnit.Framework.Assert.AreEqual(0, localizer.RunLocalization(nmAddr)); foreach (Path p_1 in localDirs) { Path @base = new Path(new Path(p_1, ContainerLocalizer.Usercache), appUser); Path privcache = new Path(@base, ContainerLocalizer.Filecache); // $x/usercache/$user/filecache Org.Mockito.Mockito.Verify(spylfs).Mkdir(Matchers.Eq(privcache), Matchers.Eq(CacheDirPerm ), Matchers.Eq(false)); Path appDir = new Path(@base, new Path(ContainerLocalizer.Appcache, appId)); // $x/usercache/$user/appcache/$appId/filecache Path appcache = new Path(appDir, ContainerLocalizer.Filecache); Org.Mockito.Mockito.Verify(spylfs).Mkdir(Matchers.Eq(appcache), Matchers.Eq(CacheDirPerm ), Matchers.Eq(false)); } // verify tokens read at expected location Org.Mockito.Mockito.Verify(spylfs).Open(tokenPath); // verify downloaded resources reported to NM Org.Mockito.Mockito.Verify(nmProxy).Heartbeat(Matchers.ArgThat(new TestContainerLocalizer.HBMatches (rsrcA.GetResource()))); Org.Mockito.Mockito.Verify(nmProxy).Heartbeat(Matchers.ArgThat(new TestContainerLocalizer.HBMatches (rsrcB.GetResource()))); Org.Mockito.Mockito.Verify(nmProxy).Heartbeat(Matchers.ArgThat(new TestContainerLocalizer.HBMatches (rsrcC.GetResource()))); Org.Mockito.Mockito.Verify(nmProxy).Heartbeat(Matchers.ArgThat(new TestContainerLocalizer.HBMatches (rsrcD.GetResource()))); // verify all HB use localizerID provided Org.Mockito.Mockito.Verify(nmProxy, Org.Mockito.Mockito.Never()).Heartbeat(Matchers.ArgThat (new _ArgumentMatcher_193())); }