private void AddRenewAction(T webhdfs) { lock (this) { if (dtRenewer == null) { dtRenewer = DelegationTokenRenewer.GetInstance(); } action = dtRenewer.AddRenewAction(webhdfs); } }
public virtual void TestRenewal() { Configuration conf = new Configuration(); Org.Apache.Hadoop.Security.Token.Token <object> token1 = Org.Mockito.Mockito.Mock < Org.Apache.Hadoop.Security.Token.Token>(); Org.Apache.Hadoop.Security.Token.Token <object> token2 = Org.Mockito.Mockito.Mock < Org.Apache.Hadoop.Security.Token.Token>(); long renewCycle = 100; DelegationTokenRenewer.renewCycle = renewCycle; UserGroupInformation ugi = UserGroupInformation.CreateUserForTesting("foo", new string [] { "bar" }); TestTokenAspect.DummyFs fs = Org.Mockito.Mockito.Spy(new TestTokenAspect.DummyFs( )); Org.Mockito.Mockito.DoReturn(token1).DoReturn(token2).When(fs).GetDelegationToken (null); Org.Mockito.Mockito.DoReturn(token1).When(fs).GetRenewToken(); // cause token renewer to abandon the token Org.Mockito.Mockito.DoThrow(new IOException("renew failed")).When(token1).Renew(conf ); Org.Mockito.Mockito.DoThrow(new IOException("get failed")).When(fs).AddDelegationTokens (null, null); URI uri = new URI("dummyfs://127.0.0.1:1234"); TokenAspect <TestTokenAspect.DummyFs> tokenAspect = new TokenAspect <TestTokenAspect.DummyFs >(fs, SecurityUtil.BuildTokenService(uri), TestTokenAspect.DummyFs.TokenKind); fs.Initialize(uri, conf); tokenAspect.InitDelegationToken(ugi); // trigger token acquisition tokenAspect.EnsureTokenInitialized(); DelegationTokenRenewer.RenewAction <object> action = GetActionFromTokenAspect(tokenAspect ); Org.Mockito.Mockito.Verify(fs).SetDelegationToken(token1); NUnit.Framework.Assert.IsTrue(action.IsValid()); // upon renewal, token will go bad based on above stubbing Sharpen.Thread.Sleep(renewCycle * 2); NUnit.Framework.Assert.AreSame(action, GetActionFromTokenAspect(tokenAspect)); NUnit.Framework.Assert.IsFalse(action.IsValid()); // now that token is invalid, should get a new one tokenAspect.EnsureTokenInitialized(); Org.Mockito.Mockito.Verify(fs, Org.Mockito.Mockito.Times(2)).GetDelegationToken(Matchers.AnyString ()); Org.Mockito.Mockito.Verify(fs).SetDelegationToken(token2); NUnit.Framework.Assert.AreNotSame(action, GetActionFromTokenAspect(tokenAspect)); action = GetActionFromTokenAspect(tokenAspect); NUnit.Framework.Assert.IsTrue(action.IsValid()); }