Package co.nubetech.hiho.avro

Source Code of co.nubetech.hiho.avro.TestDBMapper

/**
* Copyright 2011 Nube Technologies
*
* 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 co.nubetech.hiho.avro;

import static org.junit.Assert.assertEquals;

import java.sql.Types;
import java.util.ArrayList;
import java.util.List;

import org.apache.avro.Schema;
import org.apache.avro.Schema.Field;
import org.apache.avro.mapred.Pair;
import org.junit.Test;

import co.nubetech.hiho.mapreduce.lib.db.ColumnInfo;

public class TestDBMapper {

  @Test
  public final void testGetColumnField() {
    ColumnInfo intColumn = new ColumnInfo(0, Types.INTEGER, "intColumn");
    ColumnInfo stringColumn = new ColumnInfo(1, Types.VARCHAR,
        "stringColumn");
    ColumnInfo dateColumn = new ColumnInfo(1, Types.DATE, "dateColumn");
    ColumnInfo longColumn = new ColumnInfo(1, Types.BIGINT, "longColumn");
    ColumnInfo booleanColumn = new ColumnInfo(1, Types.BOOLEAN,
        "booleanColumn");
    ColumnInfo doubleColumn = new ColumnInfo(1, Types.DOUBLE,
        "doubleColumn");
    ColumnInfo charColumn = new ColumnInfo(1, Types.CHAR, "charColumn");
    ColumnInfo timeColumn = new ColumnInfo(1, Types.TIME, "timeColumn");
    ColumnInfo timeStampColumn = new ColumnInfo(1, Types.TIMESTAMP,
        "timeStampColumn");
    ColumnInfo floatColumn = new ColumnInfo(1, Types.FLOAT, "floatColumn");

    DBMapper dBMapper = new DBMapper();

    Schema.Field intColumnField = new Schema.Field("intColumn",
        Schema.create(Schema.Type.INT), null, null);
    Schema.Field stringColumnField = new Schema.Field("stringColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field dateColumnField = new Schema.Field("dateColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field longColumnField = new Schema.Field("longColumn",
        Schema.create(Schema.Type.LONG), null, null);
    Schema.Field booleanColumnField = new Schema.Field("booleanColumn",
        Schema.create(Schema.Type.BOOLEAN), null, null);
    Schema.Field doubleColumnField = new Schema.Field("doubleColumn",
        Schema.create(Schema.Type.DOUBLE), null, null);
    Schema.Field charColumnField = new Schema.Field("charColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field timeColumnField = new Schema.Field("timeColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field timeStampColumnField = new Schema.Field("timeStampColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field floatColumnField = new Schema.Field("floatColumn",
        Schema.create(Schema.Type.DOUBLE), null, null);

    assertEquals(intColumnField, dBMapper.getColumnField(intColumn));
    assertEquals(stringColumnField, dBMapper.getColumnField(stringColumn));
    assertEquals(dateColumnField, dBMapper.getColumnField(dateColumn));
    assertEquals(longColumnField, dBMapper.getColumnField(longColumn));
    assertEquals(booleanColumnField, dBMapper.getColumnField(booleanColumn));
    assertEquals(doubleColumnField, dBMapper.getColumnField(doubleColumn));
    assertEquals(charColumnField, dBMapper.getColumnField(charColumn));
    assertEquals(timeColumnField, dBMapper.getColumnField(timeColumn));
    assertEquals(timeStampColumnField,
        dBMapper.getColumnField(timeStampColumn));
    assertEquals(floatColumnField, dBMapper.getColumnField(floatColumn));
  }

  @Test
  public final void testGetSchema() {
    ColumnInfo intColumn = new ColumnInfo(0, Types.INTEGER, "intColumn");
    ColumnInfo stringColumn = new ColumnInfo(1, Types.VARCHAR,
        "stringColumn");
    ColumnInfo dateColumn = new ColumnInfo(1, Types.DATE, "dateColumn");
    ColumnInfo longColumn = new ColumnInfo(1, Types.BIGINT, "longColumn");
    ColumnInfo booleanColumn = new ColumnInfo(1, Types.BOOLEAN,
        "booleanColumn");
    ColumnInfo doubleColumn = new ColumnInfo(1, Types.DOUBLE,
        "doubleColumn");
    ColumnInfo charColumn = new ColumnInfo(1, Types.CHAR, "charColumn");
    ColumnInfo timeColumn = new ColumnInfo(1, Types.TIME, "timeColumn");
    ColumnInfo timeStampColumn = new ColumnInfo(1, Types.TIMESTAMP,
        "timeStampColumn");
    ColumnInfo floatColumn = new ColumnInfo(1, Types.FLOAT, "floatColumn");

    ArrayList<ColumnInfo> columns = new ArrayList<ColumnInfo>();
    columns.add(intColumn);
    columns.add(stringColumn);
    columns.add(dateColumn);
    columns.add(longColumn);
    columns.add(booleanColumn);
    columns.add(doubleColumn);
    columns.add(charColumn);
    columns.add(timeColumn);
    columns.add(timeStampColumn);
    columns.add(floatColumn);

    DBMapper dBMapper = new DBMapper();
    Schema schema = dBMapper.getSchema(columns);

    // Computing actual values.
    Schema.Field intColumnField = new Schema.Field("intColumn",
        Schema.create(Schema.Type.INT), null, null);
    Schema.Field stringColumnField = new Schema.Field("stringColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field dateColumnField = new Schema.Field("dateColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field longColumnField = new Schema.Field("longColumn",
        Schema.create(Schema.Type.LONG), null, null);
    Schema.Field booleanColumnField = new Schema.Field("booleanColumn",
        Schema.create(Schema.Type.BOOLEAN), null, null);
    Schema.Field doubleColumnField = new Schema.Field("doubleColumn",
        Schema.create(Schema.Type.DOUBLE), null, null);
    Schema.Field charColumnField = new Schema.Field("charColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field timeColumnField = new Schema.Field("timeColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field timeStampColumnField = new Schema.Field("timeStampColumn",
        Schema.create(Schema.Type.STRING), null, null);
    Schema.Field floatColumnField = new Schema.Field("floatColumn",
        Schema.create(Schema.Type.DOUBLE), null, null);

    ArrayList<Schema.Field> fields = new ArrayList<Schema.Field>();
    fields.add(intColumnField);
    fields.add(stringColumnField);
    fields.add(dateColumnField);
    fields.add(longColumnField);
    fields.add(booleanColumnField);
    fields.add(doubleColumnField);
    fields.add(charColumnField);
    fields.add(timeColumnField);
    fields.add(timeStampColumnField);
    fields.add(floatColumnField);

    Schema recordSchema = Schema.createRecord("hihoValue", null, null,
        false);
    recordSchema.setFields(fields);

    assertEquals(recordSchema, schema);
  }

  @Test
  public final void testGetPairSchema() {
    ColumnInfo intColumn = new ColumnInfo(0, Types.INTEGER, "intColumn");
    ArrayList<ColumnInfo> columns = new ArrayList<ColumnInfo>();
    columns.add(intColumn);

    DBMapper dBMapper = new DBMapper();
    Schema schema = dBMapper.getPairSchema(columns);

    // Computing actual values.
    Schema longWritableSchema = Schema.createRecord("hihoKey", null, null,
        false);
    Schema.Field columnField = new Schema.Field("offset",
        Schema.create(Schema.Type.LONG), null, null);
    ArrayList<Schema.Field> fields = new ArrayList<Schema.Field>();
    fields.add(columnField);
    longWritableSchema.setFields(fields);

    Schema pair = Schema.createRecord(Pair.class.getName(), null, null,
        false);
    List<Field> pairFields = new ArrayList<Field>();
    pairFields.add(new Field("key", longWritableSchema, "", null));
    pairFields.add(new Field("value", dBMapper.getSchema(columns), "",
        null, Field.Order.IGNORE));
    pair.setFields(pairFields);

    assertEquals(pair, schema);
  }

}
TOP

Related Classes of co.nubetech.hiho.avro.TestDBMapper

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.