Package edu.brown.benchmark.markov

Source Code of edu.brown.benchmark.markov.TestMarkovLoader

package edu.brown.benchmark.markov;

import java.lang.reflect.Field;

import org.apache.log4j.Logger;
import org.voltdb.CatalogContext;
import org.voltdb.VoltTable;
import org.voltdb.VoltType;
import org.voltdb.catalog.Column;
import org.voltdb.catalog.Table;

import edu.brown.BaseTestCase;
import edu.brown.utils.ProjectType;

public class TestMarkovLoader extends BaseTestCase {
    private static final Logger LOG = Logger.getLogger(TestMarkovLoader.class.getSimpleName());

    protected static final double SCALE_FACTOR = 0.01;

    protected MarkovLoader loader;
    protected Long current_tablesize;
    protected Long current_batchsize;
    protected Long total_rows = 0l;

    protected static final String LOADER_ARGS[] = {
        "CLIENT.SCALEFACTOR=" + SCALE_FACTOR,
        "NUMCLIENTS=1", "NOCONNECTIONS=true",
    };

    @Override
    protected void setUp() throws Exception {
        super.setUp(ProjectType.MARKOV);

        this.loader = new MarkovLoader(LOADER_ARGS) {
            @Override
            public CatalogContext getCatalogContext() {
                return (BaseTestCase.catalogContext);
            }

            @Override
            protected void loadTable(String tablename, VoltTable table) {
                LOG.debug("LOAD TABLE: " + tablename + " [" + "tablesize=" + TestMarkovLoader.this.current_tablesize + "," + "batchsize=" + TestMarkovLoader.this.current_batchsize + "," + "num_rows="
                        + table.getRowCount() + "," + "total_rows=" + TestMarkovLoader.this.total_rows + "]");
                assertNotNull("Got null VoltTable object for table '" + tablename + "'", table);

                // Simple checks
                int num_rows = table.getRowCount();
                TestMarkovLoader.this.total_rows += num_rows;
                assert (num_rows > 0);
                assert (num_rows <= TestMarkovLoader.this.current_batchsize);
                assert (TestMarkovLoader.this.total_rows <= TestMarkovLoader.this.current_tablesize);

                // VARCHAR Column checks
                Table catalog_tbl = TestMarkovLoader.this.getTable(tablename);
                table.resetRowPosition();
                while (table.advanceRow()) {
                    int row = table.getActiveRowIndex();
                    for (Column catalog_col : catalog_tbl.getColumns()) {
                        int index = catalog_col.getIndex();
                        VoltType col_type = VoltType.get(catalog_col.getType());
                        switch (col_type) {
                            case TINYINT:
                            case SMALLINT:
                            case INTEGER: {
                                // TODO
                                break;
                            }
                            case BIGINT: {
                                long value = table.getLong(index);
                                assert (value < Long.MAX_VALUE);
                                break;
                            }
                            case STRING: {
                                int length = catalog_col.getSize();
                                String value = table.getString(index);
                                assertNotNull("The value in " + catalog_col + " at row " + row + " is null", value);
                                assertTrue("The value in " + catalog_col + " at row " + row + " is " + value.length() + ". Max is " + length, value.length() <= length);
                                break;
                            }
                            case TIMESTAMP: {
                                // TODO
                                break;
                            }
                            default:
                                assert (false) : "Unexpected type " + col_type + " for column " + catalog_col.getName() + " for row " + row;
                        } // SWITCH

                    } // FOR
                } // WHILE
                  // if (true ||
                  // tablename.equals(MarkovConstants.TABLENAME_TABLEB))
                  // LOG.info(table);
                table.resetRowPosition();

                // TABLEB and TABLEC Checks
                if (tablename.equals(MarkovConstants.TABLENAME_TABLEB) || tablename.equals(MarkovConstants.TABLENAME_TABLEC)) {
                    while (table.advanceRow()) {
                        long id = table.getLong(0);
                        long a_id = table.getLong(1);

                        // Make sure that the first and second columns are not
                        // equal
                        assertNotSame(tablename + ".ID and A_ID are the same value", id, a_id);

                        // And then make sure that the *_ID can be converted as
                        // a CompositeId
                        long decoded[] = MarkovLoader.decodeCompositeId(id);
                        assertEquals(a_id, decoded[0]);
                    } // WHILE
                }
            }
        };
    }

    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
        // assert(this.total_rows == this.current_tablesize);
    }

    protected void setCurrentTable(String tablename) throws Exception {
        LOG.debug("Retrieving attributes for table '" + tablename + "'");
        String field_name = "TABLESIZE_" + tablename;
        Field field_handle = MarkovConstants.class.getField(field_name);
        assertNotNull(field_handle);
        this.current_tablesize = Math.round((Long) field_handle.get(null) * SCALE_FACTOR);

        field_name = "BATCHSIZE_" + tablename;
        field_handle = MarkovConstants.class.getField(field_name);
        assertNotNull(field_handle);
        this.current_batchsize = (Long) field_handle.get(null);

        this.total_rows = 0l;
    }

    /**
     * testGenerateTABLEA
     */
    public void testGenerateTABLEA() throws Exception {
        this.setCurrentTable(MarkovConstants.TABLENAME_TABLEA);
        this.loader.generateTableData(MarkovConstants.TABLENAME_TABLEA);
    }

    /**
     * testGenerateTABLEB
     */
    public void testGenerateTABLEB() throws Exception {
        this.setCurrentTable(MarkovConstants.TABLENAME_TABLEB);
        this.loader.generateTableData(MarkovConstants.TABLENAME_TABLEB);
    }

    /**
     * testGenerateTABLEC
     */
    public void testGenerateTABLEC() throws Exception {
        this.setCurrentTable(MarkovConstants.TABLENAME_TABLEC);
        this.loader.generateTableData(MarkovConstants.TABLENAME_TABLEC);
    }

    /**
     * testGenerateTABLED
     */
    public void testGenerateTABLED() throws Exception {
        this.setCurrentTable(MarkovConstants.TABLENAME_TABLED);
        this.loader.generateTableData(MarkovConstants.TABLENAME_TABLED);
    }
}
TOP

Related Classes of edu.brown.benchmark.markov.TestMarkovLoader

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.