package edu.washington.escience.myria.operator.apply;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import edu.washington.escience.myria.DbException;
import edu.washington.escience.myria.Schema;
import edu.washington.escience.myria.Type;
import edu.washington.escience.myria.expression.DownloadBlobExpression;
import edu.washington.escience.myria.expression.Expression;
import edu.washington.escience.myria.expression.ExpressionOperator;
import edu.washington.escience.myria.expression.SqrtExpression;
import edu.washington.escience.myria.expression.VariableExpression;
import edu.washington.escience.myria.operator.Apply;
import edu.washington.escience.myria.operator.BatchTupleSource;
import edu.washington.escience.myria.storage.TupleBatch;
import edu.washington.escience.myria.storage.TupleBatchBuffer;
import edu.washington.escience.myria.util.TestEnvVars;
public class ApplyDownloadBlobTest {
@Test
public void ApplyTest() throws DbException {
final Schema schema =
new Schema(
ImmutableList.of(Type.STRING_TYPE, Type.LONG_TYPE), ImmutableList.of("blobs", "b"));
final Schema expectedResultSchema =
new Schema(
ImmutableList.of(Type.BLOB_TYPE, Type.DOUBLE_TYPE), ImmutableList.of("blobs", "sqrt"));
final TupleBatchBuffer input = new TupleBatchBuffer(schema);
input.putString(0, "https://s3-us-west-2.amazonaws.com/myria-test/blobdata.csv".toString());
input.putLong(1, 2);
input.putString(0, "https://s3-us-west-2.amazonaws.com/myria-test/blobdata.csv".toString());
input.putLong(1, 2);
ImmutableList.Builder<Expression> Expressions = ImmutableList.builder();
ExpressionOperator filename = new VariableExpression(0);
ExpressionOperator db = new DownloadBlobExpression(filename);
Expression expr = new Expression("blobs", db);
Expressions.add(expr);
ExpressionOperator varb = new VariableExpression(1);
ExpressionOperator squareRoot = new SqrtExpression(varb);
Expression expr2 = new Expression("sqrt", squareRoot);
Expressions.add(expr2);
Apply apply = new Apply(new BatchTupleSource(input), Expressions.build(), false);
apply.open(TestEnvVars.get());
while (!apply.eos()) {
TupleBatch result = apply.nextReady();
if (result != null) {
assertEquals(expectedResultSchema, result.getSchema());
}
}
apply.close();
}
}