public virtual void TestJobTokenRpc()
        {
            TaskUmbilicalProtocol mockTT = Org.Mockito.Mockito.Mock <TaskUmbilicalProtocol>();

            Org.Mockito.Mockito.DoReturn(TaskUmbilicalProtocol.versionID).When(mockTT).GetProtocolVersion
                (Matchers.AnyString(), Matchers.AnyLong());
            Org.Mockito.Mockito.DoReturn(ProtocolSignature.GetProtocolSignature(mockTT, typeof(
                                                                                    TaskUmbilicalProtocol).FullName, TaskUmbilicalProtocol.versionID, 0)).When(mockTT
                                                                                                                                                               ).GetProtocolSignature(Matchers.AnyString(), Matchers.AnyLong(), Matchers.AnyInt
                                                                                                                                                                                          ());
            JobTokenSecretManager sm = new JobTokenSecretManager();
            Server server            = new RPC.Builder(conf).SetProtocol(typeof(TaskUmbilicalProtocol)).
                                       SetInstance(mockTT).SetBindAddress(Address).SetPort(0).SetNumHandlers(5).SetVerbose
                                           (true).SetSecretManager(sm).Build();

            server.Start();
            UserGroupInformation current = UserGroupInformation.GetCurrentUser();
            IPEndPoint           addr    = NetUtils.GetConnectAddress(server);
            string             jobId     = current.GetUserName();
            JobTokenIdentifier tokenId   = new JobTokenIdentifier(new Text(jobId));

            Org.Apache.Hadoop.Security.Token.Token <JobTokenIdentifier> token = new Org.Apache.Hadoop.Security.Token.Token
                                                                                <JobTokenIdentifier>(tokenId, sm);
            sm.AddTokenForJob(jobId, token);
            SecurityUtil.SetTokenService(token, addr);
            Log.Info("Service address for token is " + token.GetService());
            current.AddToken(token);
            current.DoAs(new _PrivilegedExceptionAction_110(addr, server));
        }
예제 #2
0
 /// <exception cref="System.IO.IOException"/>
 public virtual ProtocolSignature GetProtocolSignature(string protocol, long clientVersion
                                                       , int clientMethodsHash)
 {
     if (!protocol.Equals(RPC.GetProtocolName(typeof(ZKFCProtocolPB))))
     {
         throw new IOException("Serverside implements " + RPC.GetProtocolName(typeof(ZKFCProtocolPB
                                                                                     )) + ". The following requested protocol is unknown: " + protocol);
     }
     return(ProtocolSignature.GetProtocolSignature(clientMethodsHash, RPC.GetProtocolVersion
                                                       (typeof(ZKFCProtocolPB)), typeof(HAServiceProtocolPB)));
 }
예제 #3
0
 /// <exception cref="System.IO.IOException"/>
 public virtual ProtocolSignature GetProtocolSignature(string protocol, long clientVersion
                                                       , int clientMethodsHash)
 {
     return(ProtocolSignature.GetProtocolSignature(this, protocol, clientVersion, clientMethodsHash
                                                   ));
 }