@@ -529,4 +529,154 @@ public Boolean get() {
529529 }
530530 }, 1000 , 30000 );
531531 }
532+
533+ @ Test
534+ public void testUpdateNonExistingMountTable () throws Exception {
535+ System .setOut (new PrintStream (out ));
536+ String nsId = "ns0" ;
537+ String src = "/test-updateNonExistingMounttable" ;
538+ String dest = "/updateNonExistingMounttable" ;
539+ String [] argv = new String [] {"-update" , src , nsId , dest };
540+ assertEquals (0 , ToolRunner .run (admin , argv ));
541+
542+ stateStore .loadCache (MountTableStoreImpl .class , true );
543+ GetMountTableEntriesRequest getRequest =
544+ GetMountTableEntriesRequest .newInstance (src );
545+ GetMountTableEntriesResponse getResponse =
546+ client .getMountTableManager ().getMountTableEntries (getRequest );
547+ // Ensure the destination updated successfully
548+ MountTable mountTable = getResponse .getEntries ().get (0 );
549+ assertEquals (src , mountTable .getSourcePath ());
550+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
551+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
552+ }
553+
554+ @ Test
555+ public void testUpdateNameserviceDestinationForExistingMountTable () throws
556+ Exception {
557+ // Add a mount table firstly
558+ String nsId = "ns0" ;
559+ String src = "/test-updateNameserviceDestinationForExistingMountTable" ;
560+ String dest = "/UpdateNameserviceDestinationForExistingMountTable" ;
561+ String [] argv = new String [] {"-add" , src , nsId , dest };
562+ assertEquals (0 , ToolRunner .run (admin , argv ));
563+
564+ stateStore .loadCache (MountTableStoreImpl .class , true );
565+ GetMountTableEntriesRequest getRequest =
566+ GetMountTableEntriesRequest .newInstance (src );
567+ GetMountTableEntriesResponse getResponse =
568+ client .getMountTableManager ().getMountTableEntries (getRequest );
569+ // Ensure mount table added successfully
570+ MountTable mountTable = getResponse .getEntries ().get (0 );
571+ assertEquals (src , mountTable .getSourcePath ());
572+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
573+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
574+
575+ // Update the destination
576+ String newNsId = "ns1" ;
577+ String newDest = "/newDestination" ;
578+ argv = new String [] {"-update" , src , newNsId , newDest };
579+ assertEquals (0 , ToolRunner .run (admin , argv ));
580+
581+ stateStore .loadCache (MountTableStoreImpl .class , true );
582+ getResponse = client .getMountTableManager ()
583+ .getMountTableEntries (getRequest );
584+ // Ensure the destination updated successfully
585+ mountTable = getResponse .getEntries ().get (0 );
586+ assertEquals (src , mountTable .getSourcePath ());
587+ assertEquals (newNsId ,
588+ mountTable .getDestinations ().get (0 ).getNameserviceId ());
589+ assertEquals (newDest , mountTable .getDestinations ().get (0 ).getDest ());
590+ }
591+
592+ @ Test
593+ public void testUpdateReadonlyUserGroupPermissionMountable ()
594+ throws Exception {
595+ // Add a mount table
596+ String nsId = "ns0" ;
597+ String src = "/test-updateReadonlyUserGroupPermissionMountTable" ;
598+ String dest = "/UpdateReadonlyUserGroupPermissionMountTable" ;
599+ String [] argv = new String [] {"-add" , src , nsId , dest };
600+ assertEquals (0 , ToolRunner .run (admin , argv ));
601+
602+ stateStore .loadCache (MountTableStoreImpl .class , true );
603+ GetMountTableEntriesRequest getRequest =
604+ GetMountTableEntriesRequest .newInstance (src );
605+ GetMountTableEntriesResponse getResponse =
606+ client .getMountTableManager ().getMountTableEntries (getRequest );
607+ // Ensure mount table added successfully
608+ MountTable mountTable = getResponse .getEntries ().get (0 );
609+ assertEquals (src , mountTable .getSourcePath ());
610+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
611+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
612+ assertFalse (mountTable .isReadOnly ());
613+
614+ // Update the readonly, owner, group and permission
615+ String testOwner = "test_owner" ;
616+ String testGroup = "test_group" ;
617+ argv = new String [] {"-update" , src , nsId , dest , "-readonly" ,
618+ "-owner" , testOwner , "-group" , testGroup , "-mode" , "0455" };
619+ assertEquals (0 , ToolRunner .run (admin , argv ));
620+
621+ stateStore .loadCache (MountTableStoreImpl .class , true );
622+ getResponse = client .getMountTableManager ()
623+ .getMountTableEntries (getRequest );
624+
625+ // Ensure the destination updated successfully
626+ mountTable = getResponse .getEntries ().get (0 );
627+ assertEquals (src , mountTable .getSourcePath ());
628+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
629+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
630+ assertTrue (mountTable .isReadOnly ());
631+ assertEquals (testOwner , mountTable .getOwnerName ());
632+ assertEquals (testGroup , mountTable .getGroupName ());
633+ assertEquals ((short )0455 , mountTable .getMode ().toShort ());
634+ }
635+
636+ @ Test
637+ public void testUpdateOrderMountTable () throws Exception {
638+ testUpdateOrderMountTable (DestinationOrder .HASH );
639+ testUpdateOrderMountTable (DestinationOrder .LOCAL );
640+ testUpdateOrderMountTable (DestinationOrder .RANDOM );
641+ testUpdateOrderMountTable (DestinationOrder .HASH_ALL );
642+ }
643+
644+ private void testUpdateOrderMountTable (DestinationOrder order )
645+ throws Exception {
646+ // Add a mount table
647+ String nsId = "ns0" ;
648+ String src = "/test-updateOrderMountTable-" +order .toString ();
649+ String dest = "/UpdateOrderMountTable" ;
650+ String [] argv = new String [] {"-add" , src , nsId , dest };
651+ assertEquals (0 , ToolRunner .run (admin , argv ));
652+
653+ stateStore .loadCache (MountTableStoreImpl .class , true );
654+ GetMountTableEntriesRequest getRequest =
655+ GetMountTableEntriesRequest .newInstance (src );
656+ GetMountTableEntriesResponse getResponse =
657+ client .getMountTableManager ().getMountTableEntries (getRequest );
658+
659+ // Ensure mount table added successfully
660+ MountTable mountTable = getResponse .getEntries ().get (0 );
661+ assertEquals (src , mountTable .getSourcePath ());
662+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
663+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
664+ assertEquals (DestinationOrder .HASH , mountTable .getDestOrder ());
665+
666+ // Update the order
667+ argv = new String [] {"-update" , src , nsId , dest , "-order" ,
668+ order .toString ()};
669+ assertEquals (0 , ToolRunner .run (admin , argv ));
670+
671+ stateStore .loadCache (MountTableStoreImpl .class , true );
672+ getResponse = client .getMountTableManager ()
673+ .getMountTableEntries (getRequest );
674+
675+ // Ensure the destination updated successfully
676+ mountTable = getResponse .getEntries ().get (0 );
677+ assertEquals (src , mountTable .getSourcePath ());
678+ assertEquals (nsId , mountTable .getDestinations ().get (0 ).getNameserviceId ());
679+ assertEquals (dest , mountTable .getDestinations ().get (0 ).getDest ());
680+ assertEquals (order , mountTable .getDestOrder ());
681+ }
532682}
0 commit comments