Package avrobase.mysql.test

Source Code of avrobase.mysql.test.MysqlABTest

package avrobase.mysql.test;

import avrobase.AvroBase;
import avrobase.AvroFormat;
import avrobase.Mutator;
import avrobase.Row;
import avrobase.mysql.LongBytesKeyStrategy;
import avrobase.mysql.MysqlAB;
import bagcheck.User;
import com.google.common.base.Charsets;
import com.google.common.primitives.Ints;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
import org.apache.avro.util.Utf8;
import org.junit.BeforeClass;
import org.junit.Test;

import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static junit.framework.Assert.assertEquals;

public class MysqlABTest {

  private static final ExecutorService es = Executors.newCachedThreadPool();
  private static BoneCPDataSource dataSource;
  private byte[] row;

  @BeforeClass
  public static void setup() throws UnknownHostException {
    try {
      Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
      throw new AssertionError("Could not find JDBC driver: " + e);
    }

    final BoneCPConfig config = new BoneCPConfig();
    config.setJdbcUrl("jdbc:mysql://localhost:3306/avrobasetest");
    config.setMaxConnectionsPerPartition(50);
    config.setPartitionCount(4);
    config.setLazyInit(true);
    config.setUsername("bagcheck");
    config.setPassword("");
    dataSource = new BoneCPDataSource(config);
  }

  @Test
  public void putGet() throws InterruptedException {
    AvroBase<User, byte[]> userRAB = getAB();
    User user = getUser();
    userRAB.put("test".getBytes(Charsets.UTF_8), user);
    Thread.sleep(1000);
    Row<User, byte[]> test = userRAB.get("test".getBytes(Charsets.UTF_8));
    assertEquals(user, test.value);
  }

  @Test
  public void putGet2() {
    AvroBase<User, byte[]> userRAB = getAB();
    User user = getUser();
    row = "test".getBytes(Charsets.UTF_8);
    userRAB.put(row, user);
    userRAB.mutate(row, new Mutator<User>() {
      @Override
      public User mutate(User value) {
        value.firstName = $("John");
        return value;
      }
    });
    Row<User, byte[]> test = userRAB.get("test".getBytes(Charsets.UTF_8));
    user = getUser();
    user.firstName = $("John");
    assertEquals(user, test.value);
  }

  @Test
  public void rdelete() {
    AvroBase<User, byte[]> userRAB = getAB();
    row = "test".getBytes(Charsets.UTF_8);
    userRAB.delete(row);
    Row<User, byte[]> test = userRAB.get("test".getBytes(Charsets.UTF_8));
    assertEquals(null, test);
  }

  @Test
  public void testScan() {
    AvroBase<User, byte[]> userRAB = getAB();
    User user = getUser();
    long start;
    start = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
      userRAB.put(Ints.toByteArray(i), user);
    }
    System.out.println(System.currentTimeMillis() - start);
    start = System.currentTimeMillis();
    int total;
    start = System.currentTimeMillis();
    total = 0;
    for (Row<User, byte[]> userRow : userRAB.scan(Ints.toByteArray(50000), null)) {
      total++;
    }
    assertEquals(50000, total);
    System.out.println(System.currentTimeMillis() - start);
    start = System.currentTimeMillis();
    total = 0;
    for (Row<User, byte[]> userRow : userRAB.scan(null, Ints.toByteArray(50000))) {
      total++;
    }
    assertEquals(50000, total);
    System.out.println(System.currentTimeMillis() - start);
    start = System.currentTimeMillis();
    total = 0;
    for (Row<User, byte[]> userRow : userRAB.scan(Ints.toByteArray(25000), Ints.toByteArray(75000))) {
      total++;
    }
    assertEquals(50000, total);
    System.out.println(System.currentTimeMillis() - start);
    total = 0;
    for (Row<User, byte[]> userRow : userRAB.scan(null, null)) {
      total++;
      userRAB.delete(userRow.row);
    }
    assertEquals(100000, total);
    System.out.println(System.currentTimeMillis() - start);
    total = 0;
    for (Row<User, byte[]> userRow : userRAB.scan(null, null)) {
      total++;
    }
    assertEquals(0, total);
  }

  private User getUser() {
    User user = new User();
    user.email = $("spullara@yahoo.com");
    user.firstName = $("Sam");
    user.lastName = $("Pullara");
    user.image = $("");
    user.password = ByteBuffer.allocate(0);
    return user;
  }

  Utf8 $(String s) {
    return new Utf8(s);
  }

  private MysqlAB<User, byte[]> getAB() {
    return new MysqlAB<User, byte[]>(es, dataSource, "user", "profile", "avro_schemas", User.SCHEMA$, AvroFormat.BINARY, new LongBytesKeyStrategy());
  }

}
TOP

Related Classes of avrobase.mysql.test.MysqlABTest

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.