@Test
    public void testMigrateToNewNode() throws InterruptedException {
	log.info("test migrate slot to new node");
	Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
	jedisClusterNode.add(nodeInfo1);
	JedisCluster jc = new JedisCluster(jedisClusterNode);
	node4.clusterMeet(localHost, nodeInfo1.getPort());

	String node3Id = JedisClusterTestUtil.getNodeId(node3.clusterNodes());
	String node4Id = JedisClusterTestUtil.getNodeId(node4.clusterNodes());
	JedisClusterTestUtil.waitForClusterReady(node4);
	node3.clusterSetSlotMigrating(15363, node4Id);
	node4.clusterSetSlotImporting(15363, node3Id);
	try {
	    node4.set("e", "e");
	} catch (JedisMovedDataException jme) {
	    assertEquals(15363, jme.getSlot());
	    assertEquals(new HostAndPort(localHost, nodeInfo3.getPort()),
		    jme.getTargetNode());
	}

	try {
	    node3.set("e", "e");
	} catch (JedisAskDataException jae) {
	    assertEquals(15363, jae.getSlot());
	    assertEquals(new HostAndPort(localHost, nodeInfo4.getPort()),
		    jae.getTargetNode());
	}

	jc.set("e", "e");

	try {
	    node4.get("e");
	} catch (JedisMovedDataException jme) {
	    assertEquals(15363, jme.getSlot());
	    assertEquals(new HostAndPort(localHost, nodeInfo3.getPort()),
		    jme.getTargetNode());
	}
	try {
	    node3.get("e");
	} catch (JedisAskDataException jae) {
	    assertEquals(15363, jae.getSlot());
	    assertEquals(new HostAndPort(localHost, nodeInfo4.getPort()),
		    jae.getTargetNode());
	}

	assertEquals("e", jc.get("e"));

	node4.clusterSetSlotNode(15363, node4Id);
	node3.clusterSetSlotNode(15363, node4Id);
	// assertEquals("e", jc.get("e"));
	assertEquals("e", node4.get("e"));

	// assertEquals("e", node3.get("e"));

    }