Package org.springframework.xd.dirt.config

Source Code of org.springframework.xd.dirt.config.ZookeeperClientConnectTests

/*
* Copyright 2013-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.springframework.xd.dirt.config;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.fail;

import org.junit.After;
import org.junit.Test;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.xd.dirt.server.SingleNodeApplication;
import org.springframework.xd.dirt.server.TestApplicationBootstrap;
import org.springframework.xd.dirt.zookeeper.EmbeddedZooKeeper;
import org.springframework.xd.dirt.zookeeper.ZooKeeperConnection;


/**
*
* @author David Turanski
*/
public class ZookeeperClientConnectTests {

  private TestApplicationBootstrap testApplicationBootstrap;

  private SingleNodeApplication singleNodeApplication;

  private AbstractApplicationContext containerContext;

  private AbstractApplicationContext adminContext;


  public final void setUp(String zkClientConnect, Integer zkEmbeddedServerPort, boolean isConfigured) {
    System.setProperty("xd.extensions.basepackages", this.getClass().getPackage().getName());
    System.setProperty("zk.client.connect", zkClientConnect);
    if (zkEmbeddedServerPort != null) {
      System.setProperty("zk.embedded.server.port", zkEmbeddedServerPort.toString());
    }
    if (isConfigured) {
      System.setProperty("zk.client.connection.configured", "true");
    }
    this.testApplicationBootstrap = new TestApplicationBootstrap();
    this.singleNodeApplication = testApplicationBootstrap.getSingleNodeApplication();
    singleNodeApplication.run();

    this.containerContext = (AbstractApplicationContext) this.singleNodeApplication.containerContext();
    this.adminContext = (AbstractApplicationContext) this.singleNodeApplication.adminContext();
  }

  @Test
  public void testEmbeddedZooKeeper() {
    setUp("", 5555, false);
    String zkCLientConnect = this.containerContext.getEnvironment().getProperty("zk.client.connect");
    assertEquals("", zkCLientConnect);
    EmbeddedZooKeeper zkServer = this.containerContext.getBean(EmbeddedZooKeeper.class);
    assertEquals(5555, zkServer.getClientPort());
    this.adminContext.getBean(EmbeddedZooKeeper.class);
    System.clearProperty("zk.client.connect");
    System.clearProperty("zk.embedded.server.port");
  }

  /**
   * This test assumes there is no ZK server running for the connect string. It should work either way since the test
   * does not actually connect. It overrides the ZK RetryPolicy to not attempt a reconnect. {@see
   * ZooKeeperConnectionConfiguration}. Without that, this test will hang for a very long time.
   */
  @Test
  public void testZooKeeperClientConnectString() {
    String zkClientConnect = "localhost:2181,localhost:2182,localhost:2183";

    setUp(zkClientConnect, null, true);

    ZooKeeperConnection zooKeeperConnection = this.containerContext.getBean(ZooKeeperConnection.class);
    zooKeeperConnection.start();
    assertFalse(zooKeeperConnection.getRetryPolicy().allowRetry(0, 0, null));

    String actualClientConnect = this.containerContext.getEnvironment().getProperty("zk.client.connect");
    assertEquals(zkClientConnect, actualClientConnect);
    try {
      this.containerContext.getBean(EmbeddedZooKeeper.class);
      fail("EmbeddedZookeeper instance should not be created with connection String set");
    }
    catch (Exception e) {

    }
    finally {
      System.clearProperty("zk.client.connect");
      System.clearProperty("zk.embedded.server.port");
      System.clearProperty("xd.extensions.basepackages");
      System.clearProperty("zk.client.connection.configured");
    }
  }

  @After
  public final void shutDown() {
    this.singleNodeApplication.close();
  }
}
TOP

Related Classes of org.springframework.xd.dirt.config.ZookeeperClientConnectTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.