package com.neverwinterdp.scribengin.dataflow.test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import com.neverwinterdp.scribengin.client.shell.ScribenginShell; import com.neverwinterdp.scribengin.dataflow.DataflowDescriptor; import com.neverwinterdp.scribengin.dataflow.test.HelloHDFSDataflowBuilder.TestCopyScribe; import com.neverwinterdp.scribengin.event.ScribenginWaitingEventListener; import com.neverwinterdp.scribengin.storage.StorageDescriptor; import com.neverwinterdp.scribengin.storage.hdfs.HDFSSourceGenerator; import com.neverwinterdp.util.JSONSerializer; public class HdfsDataflowTest extends DataflowTest { protected void doRun(ScribenginShell shell) throws Exception { long start = System.currentTimeMillis(); ScribenginShell scribenginShell = (ScribenginShell) shell; FileSystem fs = FileSystem.getLocal(new Configuration()); new HDFSSourceGenerator().generateSource(fs, getDataDir() + "/source"); DataflowDescriptor dflDescriptor = new DataflowDescriptor(); dflDescriptor.setName("hello-hdfs-dataflow"); dflDescriptor.setNumberOfWorkers(numOfWorkers); dflDescriptor.setTaskMaxExecuteTime(taskMaxExecuteTime); dflDescriptor.setNumberOfExecutorsPerWorker(numOfExecutorPerWorker); dflDescriptor.setScribe(TestCopyScribe.class.getName()); StorageDescriptor storageDescriptor = new StorageDescriptor("HDFS", getDataDir() + "/source") ; dflDescriptor.setSourceDescriptor(storageDescriptor); StorageDescriptor defaultSink = new StorageDescriptor("HDFS", getDataDir() + "/sink"); dflDescriptor.addSinkDescriptor("default", defaultSink); StorageDescriptor invalidSink = new StorageDescriptor("HDFS", getDataDir() + "/invalid-sink"); dflDescriptor.addSinkDescriptor("invalid", invalidSink); System.out.println(JSONSerializer.INSTANCE.toString(dflDescriptor)) ; ScribenginWaitingEventListener waitingEventListener = scribenginShell.getScribenginClient().submit(dflDescriptor) ; shell.console().println("Wait time to finish: " + duration + "ms"); Thread dataflowInfoThread = newPrintDataflowThread(shell, dflDescriptor); dataflowInfoThread.start(); waitingEventListener.waitForEvents(duration); shell.console().println("The test executed time: " + (System.currentTimeMillis() - start) + "ms"); dataflowInfoThread.interrupt(); } private String getDataDir() { return "./build/hdfs"; } }