Package org.springframework.xd.dirt.stream.zookeeper

Source Code of org.springframework.xd.dirt.stream.zookeeper.ZooKeeperStreamDefinitionRepositoryTests

/*
* Copyright 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.stream.zookeeper;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.xd.dirt.module.store.ZooKeeperModuleDependencyRepository;
import org.springframework.xd.dirt.stream.StreamDefinition;
import org.springframework.xd.dirt.stream.zookeeper.ZooKeeperStreamDefinitionRepository;
import org.springframework.xd.dirt.zookeeper.EmbeddedZooKeeper;
import org.springframework.xd.dirt.zookeeper.ZooKeeperConnection;

/**
* Unit tests for {@link ZooKeeperStreamDefinitionRepository}.
*
* @author Eric Bottard
* @author David Turanski
* @author Gary Russell
* @author Mark Fisher
*/
public class ZooKeeperStreamDefinitionRepositoryTests {

  private static EmbeddedZooKeeper embeddedZooKeeper = new EmbeddedZooKeeper();

  private ZooKeeperStreamDefinitionRepository repository;

  private static ZooKeeperConnection zkConnection;

  @BeforeClass
  public static void initZooKeeper() {
    embeddedZooKeeper.start();
    zkConnection = new ZooKeeperConnection("localhost:"
        + embeddedZooKeeper.getClientPort());
    zkConnection.start();
  }

  @Before
  public void createRepository() throws Exception {
    this.repository = new ZooKeeperStreamDefinitionRepository(zkConnection,
        new ZooKeeperModuleDependencyRepository(zkConnection));
    repository.afterPropertiesSet();
    for (int i = 0; !zkConnection.isConnected() && i < 100; i++) {
      Thread.sleep(100);
    }
  }

  @After
  public void shutdownRepository() {
    if (repository != null) {
      repository.deleteAll();
    }

  }

  @AfterClass
  public static void stopZooKeeper() {
    zkConnection.stop();
    embeddedZooKeeper.stop();
  }

  @Test
  public void newlyCreatedRepo() {
    Assert.assertEquals(0, repository.count());
    Assert.assertNull(repository.findOne("some"));
    Assert.assertFalse(repository.findAll().iterator().hasNext());
    Assert.assertFalse(repository.exists("some"));
  }

  @Test
  public void simpleAdding() {
    StreamDefinition stream = new StreamDefinition("some", "http | hdfs");
    repository.save(stream);

    Assert.assertTrue(repository.exists("some"));
    Assert.assertEquals(1, repository.count());
    Assert.assertNotNull(repository.findOne("some"));
    Iterator<StreamDefinition> iterator = repository.findAll().iterator();
    Assert.assertEquals(stream, iterator.next());
    Assert.assertFalse(iterator.hasNext());
  }

  @Test
  public void multipleAdding() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    StreamDefinition two = new StreamDefinition("two", "tcp | file");
    repository.save(Arrays.asList(one, two));

    Assert.assertTrue(repository.exists("one"));
    Assert.assertTrue(repository.exists("two"));
  }

  @Test
  public void multipleFinding() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    repository.save(one);

    Iterator<StreamDefinition> iterator = repository.findAll(Arrays.asList("one", "notthere")).iterator();
    Assert.assertEquals(one, iterator.next());
    Assert.assertFalse(iterator.hasNext());
  }

  @Test
  public void deleteSimple() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    StreamDefinition two = new StreamDefinition("two", "tcp | file");
    repository.save(Arrays.asList(one, two));

    repository.delete("one");
    Assert.assertFalse(repository.exists("one"));

    repository.delete(two);
    Assert.assertFalse(repository.exists("two"));
  }

  @Test
  public void deleteMultiple() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    StreamDefinition two = new StreamDefinition("two", "tcp | file");
    StreamDefinition three = new StreamDefinition("three", "http | file");
    repository.save(Arrays.asList(one, two, three));

    repository.delete(Arrays.asList(one));
    Assert.assertFalse(repository.exists("one"));
    Assert.assertTrue(repository.exists("two"));

    repository.deleteAll();
    Assert.assertEquals(0, repository.count());
  }

  @Test
  public void override() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    repository.save(one);
    Assert.assertEquals("http | hdfs", repository.findOne("one").getDefinition());

    StreamDefinition otherone = new StreamDefinition("one", "time | file");
    repository.save(otherone);
    Assert.assertEquals(1, repository.count());
    Assert.assertEquals("time | file", repository.findOne("one").getDefinition());
  }

  @Test
  public void testInitialState() {
    assertEquals(0, repository.count());
  }

  @Test
  public void testSave() {
    StreamDefinition streamDefinition = new StreamDefinition("test", "time | log");
    repository.save(streamDefinition);
    StreamDefinition saved = repository.findOne("test");
    assertEquals(streamDefinition.getName(), saved.getName());
    assertEquals(streamDefinition.getDefinition(), saved.getDefinition());
  }

  @Test
  public void testFindAll() {
    repository.save(new StreamDefinition("test1", "time | log"));
    repository.save(new StreamDefinition("test2", "time | log"));
    repository.save(new StreamDefinition("test3", "time | log"));
    int i = 0;
    for (Iterator<StreamDefinition> it = repository.findAll().iterator(); it.hasNext();) {
      it.next();
      i++;
    }
    assertEquals(3, i);
    assertTrue(repository.exists("test1"));
    assertTrue(repository.exists("test2"));
    assertTrue(repository.exists("test3"));
    assertTrue(!repository.exists("test4"));
  }

  @Test
  public void testDelete() {
    StreamDefinition streamDefinition = new StreamDefinition("test", "time | log");
    repository.save(streamDefinition);
    StreamDefinition saved = repository.findOne("test");
    repository.delete(saved);
    assertNull(repository.findOne("test"));
  }

  @Test
  public void sorting() {
    StreamDefinition one = new StreamDefinition("one", "http | hdfs");
    StreamDefinition two = new StreamDefinition("two", "tcp | file");
    StreamDefinition three = new StreamDefinition("three", "http | file");
    StreamDefinition four = new StreamDefinition("four", "http | file");
    StreamDefinition five = new StreamDefinition("five", "http | file");
    repository.save(Arrays.asList(one, two, three, four, five));

    Assert.assertEquals(5, repository.count());

    PageRequest pageable = new PageRequest(1, 2);
    Page<StreamDefinition> sub = repository.findAll(pageable);

    Assert.assertEquals(5, sub.getTotalElements());
    Assert.assertEquals(1, sub.getNumber());
    Assert.assertEquals(2, sub.getNumberOfElements());
    Assert.assertEquals(2, sub.getSize());
    Assert.assertEquals(3, sub.getTotalPages());
    List<StreamDefinition> content = sub.getContent();
    Assert.assertEquals("one", content.get(0).getName());
    Assert.assertEquals("three", content.get(1).getName());

  }

}
TOP

Related Classes of org.springframework.xd.dirt.stream.zookeeper.ZooKeeperStreamDefinitionRepositoryTests

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.