FileSystemNodeLabelsStore extends AbstractFSNodeStore<CommonNodeLabelsManager> implements NodeLabelsStore { @Override public void init(Configuration conf, CommonNodeLabelsManager mgr) throws Exception { StoreSchema schema = new StoreSchema(EDITLOG_FILENAME, MIRROR_FILENAME); initStore(conf, new Path( conf.get(YarnConfiguration.FS_NODE_LABELS_STORE_ROOT_DIR, getDefaultFSNodeLabelsRootDir())), schema, mgr); } FileSystemNodeLabelsStore(); @Override void init(Configuration conf, CommonNodeLabelsManager mgr); @Override void close(); @Override void updateNodeToLabelsMappings(Map<NodeId, Set<String>> nodeToLabels); @Override void storeNewClusterNodeLabels(List<NodeLabel> labels); @Override void removeClusterNodeLabels(Collection<String> labels); @Override void recover();  }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Test(timeout = 10000) public void testRecoverWithMirror() throws Exception { mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p5", "p6")); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n1"), toSet("p1"), toNodeId("n2"), toSet("p2"))); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"), toNodeId("n4"), toSet("p4"), toNodeId("n5"), toSet("p5"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); mgr.removeFromClusterNodeLabels(toSet("p1")); mgr.removeFromClusterNodeLabels(Arrays.asList("p3", "p5")); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6"))); assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"), toSet("p2"), toNodeId("n4"), toSet("p4"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); assertLabelsToNodesEquals(mgr.getLabelsToNodes(), ImmutableMap.of( "p6", toSet(toNodeId("n6"), toNodeId("n7")), "p4", toSet(toNodeId("n4")), "p2", toSet(toNodeId("n2")))); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6"))); assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"), toSet("p2"), toNodeId("n4"), toSet("p4"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); assertLabelsToNodesEquals(mgr.getLabelsToNodes(), ImmutableMap.of( "p6", toSet(toNodeId("n6"), toNodeId("n7")), "p4", toSet(toNodeId("n4")), "p2", toSet(toNodeId("n2")))); mgr.stop(); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Test(timeout = 10000) public void testRecoverWithDistributedNodeLabels() throws Exception { mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p5", "p6")); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n1"), toSet("p1"), toNodeId("n2"), toSet("p2"))); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"), toNodeId("n4"), toSet("p4"), toNodeId("n5"), toSet("p5"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); mgr.removeFromClusterNodeLabels(toSet("p1")); mgr.removeFromClusterNodeLabels(Arrays.asList("p3", "p5")); mgr.stop(); mgr = new MockNodeLabelManager(); Configuration cf = new Configuration(conf); cf.set(YarnConfiguration.NODELABEL_CONFIGURATION_TYPE, YarnConfiguration.DISTRIBUTED_NODELABEL_CONFIGURATION_TYPE); mgr.init(cf); mgr.start(); Assert.assertEquals(3, mgr.getClusterNodeLabels().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6"))); Assert.assertTrue("During recovery in distributed node-labels setup, " + "node to labels mapping should not be recovered ", mgr .getNodeLabels().size() == 0); mgr.stop(); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Test(timeout = 10000) public void testEditlogRecover() throws Exception { mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4")); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p5", "p6")); mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"), toNodeId("n2"), toSet("p2"))); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"), toNodeId("n4"), toSet("p4"), toNodeId("n5"), toSet("p5"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); mgr.removeFromClusterNodeLabels(toSet("p1")); mgr.removeFromClusterNodeLabels(Arrays.asList("p3", "p5")); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6"))); assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"), toSet("p2"), toNodeId("n4"), toSet("p4"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); assertLabelsToNodesEquals(mgr.getLabelsToNodes(), ImmutableMap.of( "p6", toSet(toNodeId("n6"), toNodeId("n7")), "p4", toSet(toNodeId("n4")), "p2", toSet(toNodeId("n2")))); mgr.stop(); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Test (timeout = 10000) public void testSerilizationAfterRecovery() throws Exception { mgr.addToCluserNodeLabels(Arrays.asList(NodeLabel.newInstance("p1", true), NodeLabel.newInstance("p2", false), NodeLabel.newInstance("p3", true), NodeLabel.newInstance("p4", true), NodeLabel.newInstance("p5", true), NodeLabel.newInstance("p6", false))); mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"), toNodeId("n2"), toSet("p2"))); mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"), toNodeId("n4"), toSet("p4"), toNodeId("n5"), toSet("p5"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); mgr.removeFromClusterNodeLabels(toSet("p1")); mgr.removeFromClusterNodeLabels(Arrays.asList("p3", "p5")); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6"))); assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"), toSet("p2"), toNodeId("n4"), toSet("p4"), toNodeId("n6"), toSet("p6"), toNodeId("n7"), toSet("p6"))); assertLabelsToNodesEquals(mgr.getLabelsToNodes(), ImmutableMap.of( "p6", toSet(toNodeId("n6"), toNodeId("n7")), "p4", toSet(toNodeId("n4")), "p2", toSet(toNodeId("n2")))); Assert.assertFalse(mgr.isExclusiveNodeLabel("p2")); Assert.assertTrue(mgr.isExclusiveNodeLabel("p4")); Assert.assertFalse(mgr.isExclusiveNodeLabel("p6")); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p7", "p8")); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p9")); mgr.stop(); mgr = new MockNodeLabelManager(); mgr.init(conf); mgr.start(); Assert.assertEquals(6, mgr.getClusterNodeLabelNames().size()); Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll( Arrays.asList("p2", "p4", "p6", "p7", "p8", "p9"))); mgr.stop(); }