当前位置: 首页>>代码示例>>Java>>正文


Java TokenMetadata.clearUnsafe方法代码示例

本文整理汇总了Java中org.apache.cassandra.locator.TokenMetadata.clearUnsafe方法的典型用法代码示例。如果您正苦于以下问题:Java TokenMetadata.clearUnsafe方法的具体用法?Java TokenMetadata.clearUnsafe怎么用?Java TokenMetadata.clearUnsafe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.cassandra.locator.TokenMetadata的用法示例。


在下文中一共展示了TokenMetadata.clearUnsafe方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testAllocateTokensNetworkStrategy

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
public void testAllocateTokensNetworkStrategy(int rackCount, int replicas) throws UnknownHostException
{
    IEndpointSnitch oldSnitch = DatabaseDescriptor.getEndpointSnitch();
    try
    {
        DatabaseDescriptor.setEndpointSnitch(new RackInferringSnitch());
        int vn = 16;
        String ks = "BootStrapperTestNTSKeyspace" + rackCount + replicas;
        String dc = "1";
        SchemaLoader.createKeyspace(ks, KeyspaceParams.nts(dc, replicas, "15", 15), SchemaLoader.standardCFMD(ks, "Standard1"));
        TokenMetadata tm = new TokenMetadata();
        tm.clearUnsafe();
        for (int i = 0; i < rackCount; ++i)
            generateFakeEndpoints(tm, 10, vn, dc, Integer.toString(i));
        InetAddress addr = InetAddress.getByName("127." + dc + ".0.99");
        allocateTokensForNode(vn, ks, tm, addr);
        // Note: Not matching replication factor in second datacentre, but this should not affect us.
    } finally {
        DatabaseDescriptor.setEndpointSnitch(oldSnitch);
    }
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:22,代码来源:BootStrapperTest.java

示例2: testLocalHostPreference

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testLocalHostPreference() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();

    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));

    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));

    Map<String, String> replicationMap = new HashMap<>();
    replicationMap.put(ReplicationParams.CLASS, NetworkTopologyStrategy.class.getName());

    replicationMap.put("DC1", "2");
    replicationMap.put("DC2", "2");

    Keyspace.clear("Keyspace1");
    KeyspaceMetadata meta = KeyspaceMetadata.create("Keyspace1", KeyspaceParams.create(false, replicationMap));
    Schema.instance.setKeyspaceMetadata(meta);

    Optional<InetAddress> naturalEndpoint = ViewUtils.getViewNaturalEndpoint("Keyspace1",
                                                                   new StringToken("CA"),
                                                                   new StringToken("BB"));

    Assert.assertTrue(naturalEndpoint.isPresent());
    Assert.assertEquals(InetAddress.getByName("127.0.0.1"), naturalEndpoint.get());
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:32,代码来源:ViewUtilsTest.java

示例3: testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategyOneDCOnly

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategyOneDCOnly() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();
    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));
    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));

    Map<String, String> configOptions = new HashMap<>();
    configOptions.put("DC2", "2");

    Keyspace.clear("Keyspace1");
    KSMetaData meta = KSMetaData.newKeyspace("Keyspace1", "NetworkTopologyStrategy", configOptions, false);
    Schema.instance.setKeyspaceDefinition(meta);

    // endpoints in DC1 should not have primary range
    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.1"));
    assertTrue(primaryRanges.isEmpty());

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name,
                                                                               InetAddress.getByName("127.0.0.2"));
    assertTrue(primaryRanges.isEmpty());

    // endpoints in DC2 should have primary ranges which also cover DC1
    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.4"));
    assertTrue(primaryRanges.size() == 2);
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("A"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.5"));
    assertTrue(primaryRanges.size() == 2);
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:39,代码来源:StorageServiceServerTest.java

示例4: testConvictAfterLeft

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testConvictAfterLeft() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = new RandomPartitioner();
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<>();
    ArrayList<Token> keyTokens = new ArrayList<>();
    List<InetAddress> hosts = new ArrayList<>();
    List<UUID> hostIds = new ArrayList<>();

    // we want to convict if there is any heartbeat data present in the FD
    DatabaseDescriptor.setPhiConvictThreshold(0);

    // create a ring of 2 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 3);

    InetAddress leftHost = hosts.get(1);

    FailureDetector.instance.report(leftHost);

    // trigger handleStateLeft in StorageService
    ss.onChange(leftHost, ApplicationState.STATUS,
                valueFactory.left(Collections.singleton(endpointTokens.get(1)), Gossiper.computeExpireTime()));

    // confirm that handleStateLeft was called and leftEndpoint was removed from TokenMetadata
    assertFalse("Left endpoint not removed from TokenMetadata", tmd.isMember(leftHost));

    // confirm the FD's history for leftHost didn't get wiped by status jump to LEFT
    FailureDetector.instance.interpret(leftHost);
    assertFalse("Left endpoint not convicted", FailureDetector.instance.isAlive(leftHost));
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:36,代码来源:FailureDetectorTest.java

示例5: testGetIndexNaturalEndpoint

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testGetIndexNaturalEndpoint() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();

    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));

    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));

    Map<String, String> replicationMap = new HashMap<>();
    replicationMap.put(ReplicationParams.CLASS, NetworkTopologyStrategy.class.getName());

    replicationMap.put("DC1", "1");
    replicationMap.put("DC2", "1");

    Keyspace.clear("Keyspace1");
    KeyspaceMetadata meta = KeyspaceMetadata.create("Keyspace1", KeyspaceParams.create(false, replicationMap));
    Schema.instance.setKeyspaceMetadata(meta);

    Optional<InetAddress> naturalEndpoint = ViewUtils.getViewNaturalEndpoint("Keyspace1",
                                                                   new StringToken("CA"),
                                                                   new StringToken("BB"));

    Assert.assertTrue(naturalEndpoint.isPresent());
    Assert.assertEquals(InetAddress.getByName("127.0.0.2"), naturalEndpoint.get());
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:32,代码来源:ViewUtilsTest.java

示例6: generateFakeEndpoints

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
private void generateFakeEndpoints(int numOldNodes) throws UnknownHostException
{
    TokenMetadata tmd = StorageService.instance.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner<?> p = StorageService.getPartitioner();

    for (int i = 1; i <= numOldNodes; i++)
    {
        // leave .1 for myEndpoint
        tmd.updateNormalToken(p.getRandomToken(), InetAddress.getByName("127.0.0." + (i + 1)));
    }
}
 
开发者ID:pgaref,项目名称:ACaZoo,代码行数:13,代码来源:BootStrapperTest.java

示例7: resetGcGraceSeconds

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Before
public void resetGcGraceSeconds()
{
    TokenMetadata tokenMeta = StorageService.instance.getTokenMetadata();
    InetAddress local = FBUtilities.getBroadcastAddress();
    tokenMeta.clearUnsafe();
    tokenMeta.updateHostId(UUID.randomUUID(), local);
    tokenMeta.updateNormalTokens(BootStrapper.getRandomTokens(tokenMeta, 1), local);

    for (CFMetaData table : Schema.instance.getTablesAndViews(KEYSPACE))
        table.gcGraceSeconds(TableParams.DEFAULT_GC_GRACE_SECONDS);
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:13,代码来源:HintTest.java

示例8: testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategyOneDCOnly

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategyOneDCOnly() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();
    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));
    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));

    Map<String, String> configOptions = new HashMap<>();
    configOptions.put("DC2", "2");
    configOptions.put(ReplicationParams.CLASS, "NetworkTopologyStrategy");

    Keyspace.clear("Keyspace1");
    KeyspaceMetadata meta = KeyspaceMetadata.create("Keyspace1", KeyspaceParams.create(false, configOptions));
    Schema.instance.setKeyspaceMetadata(meta);

    // endpoints in DC1 should not have primary range
    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.1"));
    assertTrue(primaryRanges.isEmpty());

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name,
                                                                               InetAddress.getByName("127.0.0.2"));
    assertTrue(primaryRanges.isEmpty());

    // endpoints in DC2 should have primary ranges which also cover DC1
    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.4"));
    assertTrue(primaryRanges.size() == 2);
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("A"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.5"));
    assertTrue(primaryRanges.size() == 2);
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:40,代码来源:StorageServiceServerTest.java

示例9: testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategy

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testPrimaryRangeForEndpointWithinDCWithNetworkTopologyStrategy() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();

    // DC1
    metadata.updateNormalToken(new StringToken("A"), InetAddress.getByName("127.0.0.1"));
    metadata.updateNormalToken(new StringToken("C"), InetAddress.getByName("127.0.0.2"));

    // DC2
    metadata.updateNormalToken(new StringToken("B"), InetAddress.getByName("127.0.0.4"));
    metadata.updateNormalToken(new StringToken("D"), InetAddress.getByName("127.0.0.5"));

    Map<String, String> configOptions = new HashMap<>();
    configOptions.put("DC1", "1");
    configOptions.put("DC2", "1");

    Keyspace.clear("Keyspace1");
    KSMetaData meta = KSMetaData.newKeyspace("Keyspace1", "NetworkTopologyStrategy", configOptions, false);
    Schema.instance.setKeyspaceDefinition(meta);

    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name,
                                                                                                        InetAddress.getByName("127.0.0.1"));
    assertEquals(2, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("A"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.2"));
    assertEquals(2, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.4"));
    assertEquals(2, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("A"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.5"));
    assertEquals(2, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:44,代码来源:StorageServiceServerTest.java

示例10: testPrimaryRangeForEndpointWithinDCWithVnodes

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testPrimaryRangeForEndpointWithinDCWithVnodes() throws Exception
{
    TokenMetadata metadata = StorageService.instance.getTokenMetadata();
    metadata.clearUnsafe();

    // DC1
    Multimap<InetAddress, Token> dc1 = HashMultimap.create();
    dc1.put(InetAddress.getByName("127.0.0.1"), new StringToken("A"));
    dc1.put(InetAddress.getByName("127.0.0.1"), new StringToken("E"));
    dc1.put(InetAddress.getByName("127.0.0.1"), new StringToken("H"));
    dc1.put(InetAddress.getByName("127.0.0.2"), new StringToken("C"));
    dc1.put(InetAddress.getByName("127.0.0.2"), new StringToken("I"));
    dc1.put(InetAddress.getByName("127.0.0.2"), new StringToken("J"));
    metadata.updateNormalTokens(dc1);

    // DC2
    Multimap<InetAddress, Token> dc2 = HashMultimap.create();
    dc2.put(InetAddress.getByName("127.0.0.4"), new StringToken("B"));
    dc2.put(InetAddress.getByName("127.0.0.4"), new StringToken("G"));
    dc2.put(InetAddress.getByName("127.0.0.4"), new StringToken("L"));
    dc2.put(InetAddress.getByName("127.0.0.5"), new StringToken("D"));
    dc2.put(InetAddress.getByName("127.0.0.5"), new StringToken("F"));
    dc2.put(InetAddress.getByName("127.0.0.5"), new StringToken("K"));
    metadata.updateNormalTokens(dc2);

    Map<String, String> configOptions = new HashMap<>();
    configOptions.put("DC1", "1");
    configOptions.put("DC2", "2");

    Keyspace.clear("Keyspace1");
    KSMetaData meta = KSMetaData.newKeyspace("Keyspace1", "NetworkTopologyStrategy", configOptions, false);
    Schema.instance.setKeyspaceDefinition(meta);

    // endpoints in DC1 should have primary ranges which also cover DC2
    Collection<Range<Token>> primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.1"));
    assertEquals(8, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("J"), new StringToken("K"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("K"), new StringToken("L"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("L"), new StringToken("A"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("E"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("E"), new StringToken("F"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("F"), new StringToken("G"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("G"), new StringToken("H"))));

    // endpoints in DC1 should have primary ranges which also cover DC2
    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.2"));
    assertEquals(4, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("H"), new StringToken("I"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("I"), new StringToken("J"))));

    // endpoints in DC2 should have primary ranges which also cover DC1
    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.4"));
    assertEquals(4, primaryRanges.size());
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("A"), new StringToken("B"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("F"), new StringToken("G"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("K"), new StringToken("L"))));
    // because /127.0.0.4 holds token "B" which is the next to token "A" from /127.0.0.1,
    // the node covers range (L, A]
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("L"), new StringToken("A"))));

    primaryRanges = StorageService.instance.getPrimaryRangeForEndpointWithinDC(meta.name, InetAddress.getByName("127.0.0.5"));
    assertTrue(primaryRanges.size() == 8);
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("C"), new StringToken("D"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("E"), new StringToken("F"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("J"), new StringToken("K"))));
    // ranges from /127.0.0.1
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("D"), new StringToken("E"))));
    // the next token to "H" in DC2 is "K" in /127.0.0.5, so (G, H] goes to /127.0.0.5
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("G"), new StringToken("H"))));
    // ranges from /127.0.0.2
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("B"), new StringToken("C"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("H"), new StringToken("I"))));
    assertTrue(primaryRanges.contains(new Range<Token>(new StringToken("I"), new StringToken("J"))));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:79,代码来源:StorageServiceServerTest.java

示例11: testStateJumpToNormal

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testStateJumpToNormal() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = new RandomPartitioner();
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<Token>();
    ArrayList<Token> keyTokens = new ArrayList<Token>();
    List<InetAddress> hosts = new ArrayList<InetAddress>();
    List<UUID> hostIds = new ArrayList<UUID>();

    // create a ring or 6 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 6);

    // node 2 leaves
    Token newToken = positionToken(7);
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.moving(newToken));

    assertTrue(tmd.isMoving(hosts.get(2)));
    assertEquals(endpointTokens.get(2), tmd.getToken(hosts.get(2)));

    // back to normal
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(newToken)));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(newToken)));

    assertTrue(tmd.getMovingEndpoints().isEmpty());
    assertEquals(newToken, tmd.getToken(hosts.get(2)));

    newToken = positionToken(8);
    // node 2 goes through leave and left and then jumps to normal at its new token
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.moving(newToken));
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(newToken)));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(newToken)));

    assertTrue(tmd.getBootstrapTokens().isEmpty());
    assertTrue(tmd.getMovingEndpoints().isEmpty());
    assertEquals(newToken, tmd.getToken(hosts.get(2)));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:42,代码来源:MoveTest.java

示例12: testStateJumpToBootstrap

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testStateJumpToBootstrap() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = new RandomPartitioner();
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<Token>();
    ArrayList<Token> keyTokens = new ArrayList<Token>();
    List<InetAddress> hosts = new ArrayList<InetAddress>();
    List<UUID> hostIds = new ArrayList<UUID>();

    // create a ring or 5 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 7);

    // node 2 leaves
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.leaving(Collections.singleton(endpointTokens.get(2))));

    // don't bother to test pending ranges here, that is extensively tested by other
    // tests. Just check that the node is in appropriate lists.
    assertTrue(tmd.isMember(hosts.get(2)));
    assertTrue(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().isEmpty());

    // Bootstrap the node immedidiately to keyTokens.get(4) without going through STATE_LEFT
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(4))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(4))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(4)));

    // Bootstrap node hosts.get(3) to keyTokens.get(1)
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(1))));
    ss.onChange(hosts.get(3),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(1))));

    assertFalse(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(4)));
    assertEquals(hosts.get(3), tmd.getBootstrapTokens().get(keyTokens.get(1)));

    // Bootstrap node hosts.get(2) further to keyTokens.get(3)
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(3))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(3)));
    assertNull(tmd.getBootstrapTokens().get(keyTokens.get(4)));
    assertEquals(hosts.get(3), tmd.getBootstrapTokens().get(keyTokens.get(1)));

    // Go to normal again for both nodes
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(2))));
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(3), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(2))));

    assertTrue(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(keyTokens.get(3), tmd.getToken(hosts.get(2)));
    assertTrue(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertEquals(keyTokens.get(2), tmd.getToken(hosts.get(3)));

    assertTrue(tmd.getBootstrapTokens().isEmpty());
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:77,代码来源:LeaveAndBootstrapTest.java

示例13: testStateJumpToNormal

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testStateJumpToNormal() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = new RandomPartitioner();
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<Token>();
    ArrayList<Token> keyTokens = new ArrayList<Token>();
    List<InetAddress> hosts = new ArrayList<InetAddress>();
    List<UUID> hostIds = new ArrayList<UUID>();

    // create a ring or 5 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 6);

    // node 2 leaves
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.leaving(Collections.singleton(endpointTokens.get(2))));

    assertTrue(tmd.isLeaving(hosts.get(2)));
    assertEquals(endpointTokens.get(2), tmd.getToken(hosts.get(2)));

    // back to normal
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(2))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(2))));

    assertTrue(tmd.getLeavingEndpoints().isEmpty());
    assertEquals(keyTokens.get(2), tmd.getToken(hosts.get(2)));

    // node 3 goes through leave and left and then jumps to normal at its new token
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.leaving(Collections.singleton(keyTokens.get(2))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS,
            valueFactory.left(Collections.singleton(keyTokens.get(2)), Gossiper.computeExpireTime()));
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(4))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(4))));

    assertTrue(tmd.getBootstrapTokens().isEmpty());
    assertTrue(tmd.getLeavingEndpoints().isEmpty());
    assertEquals(keyTokens.get(4), tmd.getToken(hosts.get(2)));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:42,代码来源:LeaveAndBootstrapTest.java

示例14: testStateJumpToBootstrap

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testStateJumpToBootstrap() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = RandomPartitioner.instance;
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<Token>();
    ArrayList<Token> keyTokens = new ArrayList<Token>();
    List<InetAddress> hosts = new ArrayList<InetAddress>();
    List<UUID> hostIds = new ArrayList<UUID>();

    // create a ring or 5 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 7);

    // node 2 leaves
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.leaving(Collections.singleton(endpointTokens.get(2))));

    // don't bother to test pending ranges here, that is extensively tested by other
    // tests. Just check that the node is in appropriate lists.
    assertTrue(tmd.isMember(hosts.get(2)));
    assertTrue(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().isEmpty());

    // Bootstrap the node immedidiately to keyTokens.get(4) without going through STATE_LEFT
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(4))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(4))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(4)));

    // Bootstrap node hosts.get(3) to keyTokens.get(1)
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(1))));
    ss.onChange(hosts.get(3),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(1))));

    assertFalse(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(4)));
    assertEquals(hosts.get(3), tmd.getBootstrapTokens().get(keyTokens.get(1)));

    // Bootstrap node hosts.get(2) further to keyTokens.get(3)
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(3))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(hosts.get(2), tmd.getBootstrapTokens().get(keyTokens.get(3)));
    assertNull(tmd.getBootstrapTokens().get(keyTokens.get(4)));
    assertEquals(hosts.get(3), tmd.getBootstrapTokens().get(keyTokens.get(1)));

    // Go to normal again for both nodes
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(2))));
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(3), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(2))));

    assertTrue(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertEquals(keyTokens.get(3), tmd.getToken(hosts.get(2)));
    assertTrue(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertEquals(keyTokens.get(2), tmd.getToken(hosts.get(3)));

    assertTrue(tmd.getBootstrapTokens().isEmpty());
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:77,代码来源:LeaveAndBootstrapTest.java

示例15: testStateJumpToBootstrap

import org.apache.cassandra.locator.TokenMetadata; //导入方法依赖的package包/类
@Test
public void testStateJumpToBootstrap() throws UnknownHostException
{
    StorageService ss = StorageService.instance;
    TokenMetadata tmd = ss.getTokenMetadata();
    tmd.clearUnsafe();
    IPartitioner partitioner = new RandomPartitioner();
    VersionedValue.VersionedValueFactory valueFactory = new VersionedValue.VersionedValueFactory(partitioner);

    ArrayList<Token> endpointTokens = new ArrayList<Token>();
    ArrayList<Token> keyTokens = new ArrayList<Token>();
    List<InetAddress> hosts = new ArrayList<InetAddress>();
    List<UUID> hostIds = new ArrayList<UUID>();

    // create a ring or 5 nodes
    Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 7);

    // node 2 leaves
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.leaving(Collections.singleton(endpointTokens.get(2))));

    // don't bother to test pending ranges here, that is extensively tested by other
    // tests. Just check that the node is in appropriate lists.
    assertTrue(tmd.isMember(hosts.get(2)));
    assertTrue(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().isEmpty());

    // Bootstrap the node immedidiately to keyTokens.get(4) without going through STATE_LEFT
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(4))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(4))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(4)).equals(hosts.get(2)));

    // Bootstrap node hosts.get(3) to keyTokens.get(1)
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(1))));
    ss.onChange(hosts.get(3),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(1))));

    assertFalse(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(4)).equals(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(1)).equals(hosts.get(3)));

    // Bootstrap node hosts.get(2) further to keyTokens.get(3)
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2),
                ApplicationState.STATUS,
                valueFactory.bootstrapping(Collections.<Token>singleton(keyTokens.get(3))));

    assertFalse(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(3)).equals(hosts.get(2)));
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(4)) == null);
    assertTrue(tmd.getBootstrapTokens().get(keyTokens.get(1)).equals(hosts.get(3)));

    // Go to normal again for both nodes
    Gossiper.instance.injectApplicationState(hosts.get(3), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(2))));
    Gossiper.instance.injectApplicationState(hosts.get(2), ApplicationState.TOKENS, valueFactory.tokens(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(2), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(3))));
    ss.onChange(hosts.get(3), ApplicationState.STATUS, valueFactory.normal(Collections.singleton(keyTokens.get(2))));

    assertTrue(tmd.isMember(hosts.get(2)));
    assertFalse(tmd.isLeaving(hosts.get(2)));
    assertTrue(tmd.getToken(hosts.get(2)).equals(keyTokens.get(3)));
    assertTrue(tmd.isMember(hosts.get(3)));
    assertFalse(tmd.isLeaving(hosts.get(3)));
    assertTrue(tmd.getToken(hosts.get(3)).equals(keyTokens.get(2)));

    assertTrue(tmd.getBootstrapTokens().isEmpty());
}
 
开发者ID:pgaref,项目名称:ACaZoo,代码行数:77,代码来源:LeaveAndBootstrapTest.java


注:本文中的org.apache.cassandra.locator.TokenMetadata.clearUnsafe方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。