Skip to content

Commit

Permalink
test: Added kvsGet(), kvsPut()
Browse files Browse the repository at this point in the history
  • Loading branch information
hishidama committed May 28, 2024
1 parent f697b39 commit eb6f886
Show file tree
Hide file tree
Showing 10 changed files with 435 additions and 9 deletions.
2 changes: 2 additions & 0 deletions modules/iceaxe-dbtest/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ plugins {

dependencies {
implementation 'com.tsurugidb.iceaxe:iceaxe-core:1.4.0-SNAPSHOT'
implementation 'com.tsurugidb.tsubakuro:tsubakuro-kvs:1.4.0-SNAPSHOT'
implementation 'com.tsurugidb.tsubakuro:tsubakuro-debug:1.4.0-SNAPSHOT'

testImplementation "ch.qos.logback:logback-classic:1.2.3"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import com.tsurugidb.iceaxe.sql.TgDataType;
import com.tsurugidb.iceaxe.sql.parameter.TgBindParameters;
Expand All @@ -20,6 +23,8 @@
import com.tsurugidb.iceaxe.test.util.DbTestTableTester;
import com.tsurugidb.iceaxe.transaction.manager.exception.TsurugiTmIOException;
import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.tsubakuro.kvs.KvsClient;
import com.tsurugidb.tsubakuro.kvs.RecordBuffer;
import com.tsurugidb.tsubakuro.sql.SqlServiceCode;

/**
Expand Down Expand Up @@ -57,14 +62,18 @@ private static void insert(int size) throws IOException, InterruptedException {
var tm = createTransactionManagerOcc(session);
tm.execute(transaction -> {
for (int i = 0; i < size; i++) {
var parameter = TgBindParameters.of().addInt("pk", i).addString("value", String.valueOf(size - i - 1));
var parameter = TgBindParameters.of().addInt("pk", i).addString("value", value(size, i));
transaction.executeAndGetCount(ps, parameter);
}
return;
});
}
}

private static String value(int size, int i) {
return String.valueOf(size - i - 1);
}

@Test
void tableMetadata() throws Exception {
var session = getSession();
Expand Down Expand Up @@ -100,6 +109,11 @@ private static String toString(int n) {
return (n + " ".repeat(10)).substring(0, 10);
}

@SuppressWarnings("unused")
private static String toString(String s) {
return (s + " ".repeat(10)).substring(0, 10);
}

@Test
void bindWhereRange() throws Exception {
var start = TgBindVariable.ofString("start");
Expand Down Expand Up @@ -175,4 +189,43 @@ void sum() throws Exception {
assertEqualsCode(SqlServiceCode.SYMBOL_ANALYZE_EXCEPTION, e);
assertContains("function 'sum' is not found", e.getMessage());
}

@Test
void kvsGet() throws Exception {
var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var key = new RecordBuffer().add("pk", 1);
var result = client.get(txHandle, TEST, key).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);

var record = result.asRecord();
assertEquals(1, record.getInt("pk"));
assertEquals(toString(value(SIZE, 1)), record.getCharacter("value"));
}
}

@ParameterizedTest
@ValueSource(strings = { "abc", "" })
void kvsPut(String s) throws Exception {
String expected = s;

var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var record = new RecordBuffer().add("pk", 1).add("value", expected);
var result = client.put(txHandle, TEST, record).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);
}

String sql = "select value from " + TEST + " where pk=1";
var resultMapping = TgResultMapping.ofSingle(String.class);
var tm = createTransactionManagerOcc(session);
String result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(expected, result); // TODO assertEquals(toString(expected), result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import java.io.IOException;
import java.time.LocalDate;
import java.util.concurrent.TimeUnit;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
Expand All @@ -21,6 +22,8 @@
import com.tsurugidb.iceaxe.test.util.DbTestTableTester;
import com.tsurugidb.iceaxe.transaction.manager.exception.TsurugiTmIOException;
import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.tsubakuro.kvs.KvsClient;
import com.tsurugidb.tsubakuro.kvs.RecordBuffer;
import com.tsurugidb.tsubakuro.sql.SqlServiceCode;

/**
Expand Down Expand Up @@ -58,14 +61,18 @@ private static void insert(int size) throws IOException, InterruptedException {
var tm = createTransactionManagerOcc(session);
tm.execute(transaction -> {
for (int i = 0; i < size; i++) {
var parameter = TgBindParameters.of().addInt("pk", i).addDate("value", LocalDate.of(2024, 5, size - i));
var parameter = TgBindParameters.of().addInt("pk", i).addDate("value", value(size, i));
transaction.executeAndGetCount(ps, parameter);
}
return;
});
}
}

private static LocalDate value(int size, int i) {
return LocalDate.of(2024, 5, size - i);
}

@Test
void tableMetadata() throws Exception {
var session = getSession();
Expand Down Expand Up @@ -167,4 +174,42 @@ void sum() throws Exception {
assertEqualsCode(SqlServiceCode.SYMBOL_ANALYZE_EXCEPTION, e);
assertContains("function 'sum' is not found", e.getMessage());
}

@Test
void kvsGet() throws Exception {
var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var key = new RecordBuffer().add("pk", 1);
var result = client.get(txHandle, TEST, key).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);

var record = result.asRecord();
assertEquals(1, record.getInt("pk"));
assertEquals(value(SIZE, 1), record.getDate("value"));
}
}

@Test
void kvsPut() throws Exception {
var expected = LocalDate.of(2023, 5, 28);

var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var record = new RecordBuffer().add("pk", 1).add("value", expected);
var result = client.put(txHandle, TEST, record).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);
}

String sql = "select value from " + TEST + " where pk=1";
var resultMapping = TgResultMapping.ofSingle(LocalDate.class);
var tm = createTransactionManagerOcc(session);
var result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(expected, result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@

import java.io.IOException;
import java.math.BigDecimal;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import com.tsurugidb.iceaxe.sql.TgDataType;
import com.tsurugidb.iceaxe.sql.parameter.TgBindParameters;
Expand All @@ -20,6 +23,8 @@
import com.tsurugidb.iceaxe.sql.result.TsurugiResultEntity;
import com.tsurugidb.iceaxe.test.util.DbTestTableTester;
import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.tsubakuro.kvs.KvsClient;
import com.tsurugidb.tsubakuro.kvs.RecordBuffer;

/**
* decimal(5,0) test
Expand Down Expand Up @@ -56,14 +61,18 @@ private static void insert(int size) throws IOException, InterruptedException {
var tm = createTransactionManagerOcc(session);
tm.execute(transaction -> {
for (int i = 0; i < size; i++) {
var parameter = TgBindParameters.of().addInt("pk", i).addDecimal("value", BigDecimal.valueOf(size - i - 1));
var parameter = TgBindParameters.of().addInt("pk", i).addDecimal("value", value(size, i));
transaction.executeAndGetCount(ps, parameter);
}
return;
});
}
}

private static BigDecimal value(int size, int i) {
return BigDecimal.valueOf(size - i - 1);
}

@Test
void tableMetadata() throws Exception {
var session = getSession();
Expand Down Expand Up @@ -230,4 +239,43 @@ void avgCastAny() throws Exception {
BigDecimal result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(BigDecimal.valueOf(IntStream.range(0, SIZE).sum() / SIZE), result);
}

@Test
void kvsGet() throws Exception {
var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var key = new RecordBuffer().add("pk", 1);
var result = client.get(txHandle, TEST, key).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);

var record = result.asRecord();
assertEquals(1, record.getInt("pk"));
assertEquals(value(SIZE, 1), record.getDecimal("value"));
}
}

@ParameterizedTest
@ValueSource(ints = { 123, 0, -1 })
void kvsPut(int n) throws Exception {
var expected = BigDecimal.valueOf(n);

var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var record = new RecordBuffer().add("pk", 1).add("value", expected);
var result = client.put(txHandle, TEST, record).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);
}

String sql = "select value from " + TEST + " where pk=1";
var resultMapping = TgResultMapping.ofSingle(BigDecimal.class);
var tm = createTransactionManagerOcc(session);
var result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(expected, result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@

import java.io.IOException;
import java.math.BigDecimal;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import com.tsurugidb.iceaxe.sql.TgDataType;
import com.tsurugidb.iceaxe.sql.parameter.TgBindParameters;
Expand All @@ -20,6 +23,8 @@
import com.tsurugidb.iceaxe.sql.result.TsurugiResultEntity;
import com.tsurugidb.iceaxe.test.util.DbTestTableTester;
import com.tsurugidb.sql.proto.SqlCommon;
import com.tsurugidb.tsubakuro.kvs.KvsClient;
import com.tsurugidb.tsubakuro.kvs.RecordBuffer;

/**
* decimal(5,1) test
Expand Down Expand Up @@ -56,14 +61,18 @@ private static void insert(int size) throws IOException, InterruptedException {
var tm = createTransactionManagerOcc(session);
tm.execute(transaction -> {
for (int i = 0; i < size; i++) {
var parameter = TgBindParameters.of().addInt("pk", i).addDecimal("value", BigDecimal.valueOf(size - i - 1 + 0.1));
var parameter = TgBindParameters.of().addInt("pk", i).addDecimal("value", value(size, i));
transaction.executeAndGetCount(ps, parameter);
}
return;
});
}
}

private static BigDecimal value(int size, int i) {
return BigDecimal.valueOf(size - i - 1 + 0.1);
}

@Test
void tableMetadata() throws Exception {
var session = getSession();
Expand Down Expand Up @@ -226,4 +235,43 @@ void avgCastAny() throws Exception {
BigDecimal result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(BigDecimal.valueOf(IntStream.range(0, SIZE).mapToDouble(n -> n + 0.1).sum() / SIZE), result);
}

@Test
void kvsGet() throws Exception {
var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var key = new RecordBuffer().add("pk", 1);
var result = client.get(txHandle, TEST, key).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);

var record = result.asRecord();
assertEquals(1, record.getInt("pk"));
assertEquals(value(SIZE, 1), record.getDecimal("value"));
}
}

@ParameterizedTest
@ValueSource(doubles = { 123, 123.4, 0, -1.1 })
void kvsPut(double n) throws Exception {
var expected = BigDecimal.valueOf(n);

var session = getSession();
try (var client = KvsClient.attach(session.getLowSession()); // TODO Iceaxe KVS
var txHandle = client.beginTransaction().await(10, TimeUnit.SECONDS)) {
var record = new RecordBuffer().add("pk", 1).add("value", expected);
var result = client.put(txHandle, TEST, record).await(10, TimeUnit.SECONDS);
assertEquals(1, result.size());

client.commit(txHandle).await(10, TimeUnit.SECONDS);
}

String sql = "select value from " + TEST + " where pk=1";
var resultMapping = TgResultMapping.ofSingle(BigDecimal.class);
var tm = createTransactionManagerOcc(session);
var result = tm.executeAndFindRecord(sql, resultMapping).get();
assertEquals(expected, result);
}
}
Loading

0 comments on commit eb6f886

Please sign in to comment.