Package com.findwise.hydra.mongodb

Source Code of com.findwise.hydra.mongodb.MongoPipelineIOIT

package com.findwise.hydra.mongodb;

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

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

import org.junit.Rule;
import org.junit.Test;

import com.findwise.hydra.DatabaseFile;
import com.findwise.hydra.Pipeline;
import com.findwise.hydra.Stage;
import com.findwise.hydra.StageGroup;
import com.mongodb.WriteConcern;

public class MongoPipelineIOIT {
 
  @Rule
  public MongoConnectorResource mongoConnectorResource = new MongoConnectorResource(getClass());
 
  @Test
  public void testSave() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    int count = mdc.getPipelineReader().getFiles().size();
   
    String testString = "testString";
    mdc.getPipelineWriter().save("file.txt", new ByteArrayInputStream(testString.getBytes("UTF-8")));
    if(mdc.getPipelineReader().getFiles().size()!=count+1) {
      fail("Did not save");
    }

    mdc.getPipelineWriter().save("file2.txt", new ByteArrayInputStream("random string".getBytes("UTF-8")));
    if(mdc.getPipelineReader().getFiles().size()!=count+2) {
      fail("Did not save the second file...");
    }
  }
 
  @Test
  public void testDeleteFile() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    testSave();
   
    mdc.getPipelineWriter().save("file", new ByteArrayInputStream("random".getBytes("UTF-8")));
    mdc.getPipelineWriter().save("filename", new ByteArrayInputStream("random2".getBytes("UTF-8")));

    int count = mdc.getPipelineReader().getFiles().size();
   
    List<DatabaseFile> list = mdc.getPipelineReader().getFiles();
   
    mdc.getPipelineWriter().deleteFile(list.get(0).getId());
    assertEquals(mdc.getPipelineReader().getFiles().size(), count-1);
  }

  @Test
  public void testFilename() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    mdc.getPipelineWriter().save("myFile.txt", new ByteArrayInputStream("some file".getBytes("UTF-8")));
   
    List<DatabaseFile> list = mdc.getPipelineReader().getFiles();
    for(DatabaseFile df : list) {
      if(df.getFilename().equals("myFile.txt")) {
        return;
      }
    }
    fail("Did not get correct file name!");
  }
 
  @Test
  public void testGetContents() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    String filename = "testContentsFile.txt";
    String contents = "This is the contents of the file";
    mdc.getPipelineWriter().save(filename, new ByteArrayInputStream(contents.getBytes("UTF-8")));
   
    List<DatabaseFile> list = mdc.getPipelineReader().getFiles();
    for(DatabaseFile df : list) {
      if(df.getFilename().equals(filename)) {
        InputStream is = mdc.getPipelineReader().getStream(df);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        assertEquals(br.readLine(), contents);
        br.close();
        return;
      }
    }
    fail("Did not find the file");
  }
 
  @Test
  public void testGetStageGroups() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    Pipeline p = new Pipeline();
    StageGroup singleGroup = new StageGroup("singleStage");
    StageGroup multiGroup = new StageGroup("multi");
    Stage single = new Stage("singleStage", new DatabaseFile());
    Stage multi1 = new Stage("multi1", new DatabaseFile());
    Stage multi2 = new Stage("multi2", new DatabaseFile());
    multiGroup.addStage(multi1);
    multiGroup.addStage(multi2);
    singleGroup.addStage(single);
   
    p.addGroup(multiGroup);
    p.addGroup(singleGroup);
   
    assertEquals(2, p.getStageGroups().size());
    assertTrue(p.hasGroup("multi"));
    assertTrue(p.hasGroup("singleStage"));
   
    mongoConnectorResource.reset();
    mdc = mongoConnectorResource.getConnector();
    MongoPipelineReader reader = new MongoPipelineReader(mdc.getDB());
    MongoPipelineWriter writer = new MongoPipelineWriter(reader, WriteConcern.SAFE);
   
    assertEquals(0, reader.getPipeline().getStages().size());
    writer.write(p);
   
    assertEquals(3, reader.getPipeline().getStages().size());

    assertTrue(reader.getPipeline().hasGroup("multi"));
    assertTrue(reader.getPipeline().hasGroup("singleStage"));

    assertEquals(2, reader.getPipeline().getGroup("multi").getSize());
    assertEquals(1, reader.getPipeline().getGroup("singleStage").getSize());
  }
 
  @Test
  public void testStageGroupProperties() throws Exception {
    MongoConnector mdc = mongoConnectorResource.getConnector();
    Pipeline p = new Pipeline();
    StageGroup singleGroup = new StageGroup("singleStage");
    StageGroup multiGroup = new StageGroup("multi");
    Stage single = new Stage("singleStage", new DatabaseFile());
    Stage multi1 = new Stage("multi1", new DatabaseFile());
    Stage multi2 = new Stage("multi2", new DatabaseFile());
    multiGroup.addStage(multi1);
    multiGroup.addStage(multi2);
    singleGroup.addStage(single);
   
    p.addGroup(multiGroup);
    p.addGroup(singleGroup);
   
    multiGroup.setJvmParameters("jvm");
    multiGroup.setRetries(3);
    multiGroup.setLogging(false);
    multiGroup.setCmdlineArgs("cmd");
   
    mongoConnectorResource.reset();
    mdc = mongoConnectorResource.getConnector();
    MongoPipelineReader reader = new MongoPipelineReader(mdc.getDB());
    MongoPipelineWriter writer = new MongoPipelineWriter(reader, WriteConcern.SAFE);
   
    writer.write(p);
   
    StageGroup g2 = reader.getPipeline().getGroup("multi");
    assertEquals(multiGroup.getJvmParameters(), g2.getJvmParameters());
    assertEquals(multiGroup.getRetries(), g2.getRetries());
    assertEquals(multiGroup.isLogging(), g2.isLogging());
    assertEquals(multiGroup.getCmdlineArgs(), g2.getCmdlineArgs());
  }
}
TOP

Related Classes of com.findwise.hydra.mongodb.MongoPipelineIOIT

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.