[ 
https://issues.apache.org/jira/browse/YARN-11350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17643383#comment-17643383
 ] 

ASF GitHub Bot commented on YARN-11350:
---------------------------------------

slfan1989 commented on code in PR #5131:
URL: https://github.com/apache/hadoop/pull/5131#discussion_r1039707916


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/store/impl/TestZookeeperFederationStateStore.java:
##########
@@ -171,38 +203,293 @@ public void testMetricsInited() throws Exception {
     MetricsRecords.assertMetric(record, 
"UpdateReservationHomeSubClusterNumOps",  expectOps);
   }
 
-  @Test(expected = NotImplementedException.class)
+  @Test
   public void testStoreNewMasterKey() throws Exception {
-    super.testStoreNewMasterKey();
+
+    // Manually create a DelegationKey,
+    // and call the interface storeNewMasterKey to write the data to zk.
+    DelegationKey key = new DelegationKey(1234, Time.now() + 60 * 60, 
"keyBytes".getBytes());
+    RouterMasterKey paramRouterMasterKey = 
RouterMasterKey.newInstance(key.getKeyId(),
+        ByteBuffer.wrap(key.getEncodedKey()), key.getExpiryDate());
+    FederationStateStore stateStore = this.getStateStore();
+
+    assertTrue(stateStore instanceof ZookeeperFederationStateStore);
+
+    // Compare the data returned by the storeNewMasterKey
+    // interface with the data queried by zk, and ensure that the data is 
consistent.
+    RouterMasterKeyRequest routerMasterKeyRequest =
+        RouterMasterKeyRequest.newInstance(paramRouterMasterKey);
+    RouterMasterKeyResponse response = 
stateStore.storeNewMasterKey(routerMasterKeyRequest);
+    assertNotNull(response);
+    RouterMasterKey respRouterMasterKey = response.getRouterMasterKey();
+    assertNotNull(respRouterMasterKey);
+
+    // Get Data From zk.
+    String nodeName = ROUTER_RM_DELEGATION_KEY_PREFIX + key.getKeyId();
+    String nodePath = ZNODE_MASTER_KEY_PREFIX + nodeName;
+    RouterMasterKey zkRouterMasterKey = getRouterMasterKeyFromZK(nodePath);
+
+    assertNotNull(zkRouterMasterKey);
+    assertEquals(paramRouterMasterKey, respRouterMasterKey);
+    assertEquals(paramRouterMasterKey, zkRouterMasterKey);
+    assertEquals(zkRouterMasterKey, respRouterMasterKey);
   }
 
-  @Test(expected = NotImplementedException.class)
+  @Test
   public void testGetMasterKeyByDelegationKey() throws YarnException, 
IOException {
-    super.testGetMasterKeyByDelegationKey();
+
+    // Manually create a DelegationKey,
+    // and call the interface storeNewMasterKey to write the data to zk.
+    DelegationKey key = new DelegationKey(5678, Time.now() + 60 * 60, 
"keyBytes".getBytes());
+    RouterMasterKey paramRouterMasterKey = 
RouterMasterKey.newInstance(key.getKeyId(),
+        ByteBuffer.wrap(key.getEncodedKey()), key.getExpiryDate());
+    FederationStateStore stateStore = this.getStateStore();
+
+    assertTrue(stateStore instanceof ZookeeperFederationStateStore);

Review Comment:
   Thank you very much for helping to review the code, I will fix it.



##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/store/impl/TestZookeeperFederationStateStore.java:
##########
@@ -171,38 +203,293 @@ public void testMetricsInited() throws Exception {
     MetricsRecords.assertMetric(record, 
"UpdateReservationHomeSubClusterNumOps",  expectOps);
   }
 
-  @Test(expected = NotImplementedException.class)
+  @Test
   public void testStoreNewMasterKey() throws Exception {
-    super.testStoreNewMasterKey();
+
+    // Manually create a DelegationKey,
+    // and call the interface storeNewMasterKey to write the data to zk.
+    DelegationKey key = new DelegationKey(1234, Time.now() + 60 * 60, 
"keyBytes".getBytes());
+    RouterMasterKey paramRouterMasterKey = 
RouterMasterKey.newInstance(key.getKeyId(),
+        ByteBuffer.wrap(key.getEncodedKey()), key.getExpiryDate());
+    FederationStateStore stateStore = this.getStateStore();
+
+    assertTrue(stateStore instanceof ZookeeperFederationStateStore);
+
+    // Compare the data returned by the storeNewMasterKey
+    // interface with the data queried by zk, and ensure that the data is 
consistent.
+    RouterMasterKeyRequest routerMasterKeyRequest =
+        RouterMasterKeyRequest.newInstance(paramRouterMasterKey);
+    RouterMasterKeyResponse response = 
stateStore.storeNewMasterKey(routerMasterKeyRequest);
+    assertNotNull(response);
+    RouterMasterKey respRouterMasterKey = response.getRouterMasterKey();
+    assertNotNull(respRouterMasterKey);
+
+    // Get Data From zk.
+    String nodeName = ROUTER_RM_DELEGATION_KEY_PREFIX + key.getKeyId();
+    String nodePath = ZNODE_MASTER_KEY_PREFIX + nodeName;
+    RouterMasterKey zkRouterMasterKey = getRouterMasterKeyFromZK(nodePath);
+
+    assertNotNull(zkRouterMasterKey);
+    assertEquals(paramRouterMasterKey, respRouterMasterKey);
+    assertEquals(paramRouterMasterKey, zkRouterMasterKey);
+    assertEquals(zkRouterMasterKey, respRouterMasterKey);
   }
 
-  @Test(expected = NotImplementedException.class)
+  @Test
   public void testGetMasterKeyByDelegationKey() throws YarnException, 
IOException {
-    super.testGetMasterKeyByDelegationKey();
+
+    // Manually create a DelegationKey,
+    // and call the interface storeNewMasterKey to write the data to zk.
+    DelegationKey key = new DelegationKey(5678, Time.now() + 60 * 60, 
"keyBytes".getBytes());
+    RouterMasterKey paramRouterMasterKey = 
RouterMasterKey.newInstance(key.getKeyId(),
+        ByteBuffer.wrap(key.getEncodedKey()), key.getExpiryDate());
+    FederationStateStore stateStore = this.getStateStore();
+
+    assertTrue(stateStore instanceof ZookeeperFederationStateStore);
+
+    // Call the getMasterKeyByDelegationKey interface of stateStore to get the 
MasterKey data.
+    RouterMasterKeyRequest routerMasterKeyRequest =
+        RouterMasterKeyRequest.newInstance(paramRouterMasterKey);
+    RouterMasterKeyResponse response = 
stateStore.storeNewMasterKey(routerMasterKeyRequest);
+    assertNotNull(response);
+
+    // Get Data From zk.
+    String nodeName = ROUTER_RM_DELEGATION_KEY_PREFIX + key.getKeyId();
+    String nodePath = ZNODE_MASTER_KEY_PREFIX + nodeName;
+    RouterMasterKey zkRouterMasterKey = getRouterMasterKeyFromZK(nodePath);
+
+    // Call the getMasterKeyByDelegationKey interface to get the returned 
result.
+    // The zk data should be consistent with the returned data.
+    RouterMasterKeyResponse response1 =
+        stateStore.getMasterKeyByDelegationKey(routerMasterKeyRequest);
+    assertNotNull(response1);
+    RouterMasterKey respRouterMasterKey = response1.getRouterMasterKey();
+    assertEquals(paramRouterMasterKey, respRouterMasterKey);
+    assertEquals(paramRouterMasterKey, zkRouterMasterKey);
+    assertEquals(zkRouterMasterKey, respRouterMasterKey);
   }
 
-  @Test(expected = NotImplementedException.class)
+  @Test
   public void testRemoveStoredMasterKey() throws YarnException, IOException {
-    super.testRemoveStoredMasterKey();
+
+    // Manually create a DelegationKey,
+    // and call the interface storeNewMasterKey to write the data to zk.
+    DelegationKey key = new DelegationKey(2345, Time.now() + 60 * 60, 
"keyBytes".getBytes());
+    RouterMasterKey paramRouterMasterKey = 
RouterMasterKey.newInstance(key.getKeyId(),
+        ByteBuffer.wrap(key.getEncodedKey()), key.getExpiryDate());
+    FederationStateStore stateStore = this.getStateStore();
+
+    assertTrue(stateStore instanceof ZookeeperFederationStateStore);
+
+    // We need to ensure that the returned result is not empty.
+    RouterMasterKeyRequest routerMasterKeyRequest =
+        RouterMasterKeyRequest.newInstance(paramRouterMasterKey);
+    RouterMasterKeyResponse response = 
stateStore.storeNewMasterKey(routerMasterKeyRequest);
+    assertNotNull(response);
+
+    // We will check if delegationToken exists in zk.
+    String nodeName = ROUTER_RM_DELEGATION_KEY_PREFIX + key.getKeyId();
+    String nodePath = ZNODE_MASTER_KEY_PREFIX + nodeName;
+    assertTrue(isExists(nodePath));
+
+    // Call removeStoredMasterKey to remove the MasterKey data in zk.
+    RouterMasterKeyResponse response1 = 
stateStore.removeStoredMasterKey(routerMasterKeyRequest);
+    assertNotNull(response1);
+    RouterMasterKey respRouterMasterKey = response1.getRouterMasterKey();
+    assertNotNull(respRouterMasterKey);
+    assertEquals(paramRouterMasterKey, respRouterMasterKey);
+
+    // We have removed the RouterMasterKey data from zk,
+    // the path should be empty at this point.
+    assertFalse(isExists(nodePath));
   }
 
-  @Test(expected = NotImplementedException.class)
-  public void testStoreNewToken() throws IOException, YarnException {
-    super.testStoreNewToken();
+  @Test
+  public void testStoreNewToken() throws YarnException, IOException {
+
+    // We manually generate the DelegationToken,
+    // and then call the StoreNewToken method to store the Token in zk.
+    RMDelegationTokenIdentifier identifier = new RMDelegationTokenIdentifier(
+        new Text("owner2"), new Text("renewer2"), new Text("realuser2"));
+    FederationStateStore stateStore = this.getStateStore();
+    int seqNum = stateStore.incrementDelegationTokenSeqNum();
+    identifier.setSequenceNumber(seqNum);
+    Long renewDate = Time.now();
+
+    // Store new rm-token
+    RouterStoreToken paramStoreToken = 
RouterStoreToken.newInstance(identifier, renewDate);
+    RouterRMTokenRequest request = 
RouterRMTokenRequest.newInstance(paramStoreToken);
+    RouterRMTokenResponse routerRMTokenResponse = 
stateStore.storeNewToken(request);
+    assertNotNull(routerRMTokenResponse);
+    RouterStoreToken respStoreToken = 
routerRMTokenResponse.getRouterStoreToken();
+    assertNotNull(respStoreToken);
+
+    // Get delegationToken Path
+    String nodeName = ROUTER_RM_DELEGATION_TOKEN_PREFIX + 
identifier.getSequenceNumber();
+    String nodePath = getNodePath(ZNODE_DT_PREFIX, nodeName);
+
+    // Check if the path exists, we expect the result to exist.
+    assertTrue(isExists(nodePath));
+
+    // Check whether the token (paramStoreToken)
+    // We generated is consistent with the data stored in zk.
+    // We expect data to be consistent.
+    RouterStoreToken zkRouterStoreToken = getStoreTokenFromZK(nodePath);
+    assertNotNull(zkRouterStoreToken);
+    assertEquals(paramStoreToken, zkRouterStoreToken);
+    assertEquals(respStoreToken, zkRouterStoreToken);
   }
 
-  @Test(expected = NotImplementedException.class)
-  public void testUpdateStoredToken() throws IOException, YarnException {
-    super.testUpdateStoredToken();
+  @Test
+  public void testUpdateStoredToken() throws YarnException, IOException {
+
+    // We manually generate the DelegationToken,
+    // and then call the StoreNewToken method to store the Token in zk.
+    RMDelegationTokenIdentifier identifier = new RMDelegationTokenIdentifier(
+        new Text("owner2"), new Text("renewer2"), new Text("realuser2"));
+    FederationStateStore stateStore = this.getStateStore();
+    int seqNum = stateStore.incrementDelegationTokenSeqNum();
+    identifier.setSequenceNumber(seqNum);
+    Long renewDate = Time.now();
+
+    // Store new rm-token()
+    RouterStoreToken storeToken = RouterStoreToken.newInstance(identifier, 
renewDate);
+    RouterRMTokenRequest request = 
RouterRMTokenRequest.newInstance(storeToken);
+    RouterRMTokenResponse routerRMTokenResponse = 
stateStore.storeNewToken(request);
+    Assert.assertNotNull(routerRMTokenResponse);
+
+    // We are ready to update some data renewDate2 & sequenceNumber2
+    Long renewDate2 = Time.now();
+    int sequenceNumber2 = stateStore.incrementDelegationTokenSeqNum();
+    identifier.setSequenceNumber(sequenceNumber2);
+
+    // Update rm-token
+    RouterStoreToken paramStoreToken = 
RouterStoreToken.newInstance(identifier, renewDate2);
+    RouterRMTokenRequest updateTokenRequest = 
RouterRMTokenRequest.newInstance(paramStoreToken);
+    RouterRMTokenResponse updateTokenResponse = 
stateStore.updateStoredToken(updateTokenRequest);
+    Assert.assertNotNull(updateTokenResponse);
+    RouterStoreToken updateTokenResp = 
updateTokenResponse.getRouterStoreToken();
+
+    // Get delegationToken Path
+    String nodeName = ROUTER_RM_DELEGATION_TOKEN_PREFIX + 
identifier.getSequenceNumber();
+    String nodePath = getNodePath(ZNODE_DT_PREFIX, nodeName);
+
+    // Check if the path exists, we expect the result to exist.
+    assertTrue(isExists(nodePath));
+
+    // Check whether the token (paramStoreToken)
+    // We generated is consistent with the data stored in zk.
+    // We expect data to be consistent.
+    RouterStoreToken zkRouterStoreToken = getStoreTokenFromZK(nodePath);
+    assertNotNull(zkRouterStoreToken);
+    assertEquals(paramStoreToken, zkRouterStoreToken);
+    assertEquals(updateTokenResp, zkRouterStoreToken);
   }
 
-  @Test(expected = NotImplementedException.class)
-  public void testRemoveStoredToken() throws IOException, YarnException {
-    super.testRemoveStoredToken();
+  @Test
+  public void testRemoveStoredToken() throws YarnException, IOException {
+
+    // We manually generate the DelegationToken,
+    // and then call the StoreNewToken method to store the Token in zk.
+    RMDelegationTokenIdentifier identifier = new RMDelegationTokenIdentifier(
+        new Text("owner2"), new Text("renewer2"), new Text("realuser2"));
+    FederationStateStore stateStore = this.getStateStore();
+    int seqNum = stateStore.incrementDelegationTokenSeqNum();
+    identifier.setSequenceNumber(seqNum);
+    Long renewDate = Time.now();
+
+    // Store new rm-token
+    RouterStoreToken storeToken = RouterStoreToken.newInstance(identifier, 
renewDate);
+    RouterRMTokenRequest request = 
RouterRMTokenRequest.newInstance(storeToken);
+    RouterRMTokenResponse routerRMTokenResponse = 
stateStore.storeNewToken(request);
+    Assert.assertNotNull(routerRMTokenResponse);

Review Comment:
   I will fix it.





> [Federation] Router Support DelegationToken With ZK
> ---------------------------------------------------
>
>                 Key: YARN-11350
>                 URL: https://issues.apache.org/jira/browse/YARN-11350
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: federation, router
>    Affects Versions: 3.4.0
>            Reporter: Shilun Fan
>            Assignee: Shilun Fan
>            Priority: Major
>              Labels: pull-request-available
>
> [Federation] Router Support DelegationToken With 
> ZookeeperFederationStateStore.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to