kinesis-consumer/mysql_checkpoint_test.go

60 lines
1.7 KiB
Go
Raw Normal View History

package connector
import (
"database/sql"
"os"
"testing"
)
func Test_MysqlKey(t *testing.T) {
k := "app:checkpoint:stream:shard"
c := MysqlCheckpoint{AppName: "app", StreamName: "stream"}
r := c.key("shard")
if r != k {
t.Errorf("key() = %v, want %v", k, r)
}
}
func Test_MysqlCheckpointExists(t *testing.T) {
rc, _ := sql.Open("mysql", os.Getenv("CHECKPOINT_MYSQL_DSN"))
k := "app:checkpoint:stream:shard"
_, err := rc.Exec("INSERT INTO KinesisConnector.TestCheckpoint (sequence_number, checkpoint_key) VALUES (?, ?) ON DUPLICATE KEY UPDATE sequence_number = ?", "fakeSeqNum", k, "fakeSeqNum")
if err != nil {
t.Fatalf("cannot insert checkpoint into db manually, %s", err)
}
c := MysqlCheckpoint{AppName: "app", StreamName: "stream", TableName: "KinesisConnector.TestCheckpoint", Db: rc}
r := c.CheckpointExists("shard")
if r != true {
t.Errorf("CheckpointExists() = %v, want %v", false, r)
}
rc.Exec("DELETE FROM KinesisConnector.TestCheckpoint WHERE checkpoint_key = ?", k)
}
func Test_MysqlSetCheckpoint(t *testing.T) {
k := "app:checkpoint:stream:shard"
rc, _ := sql.Open("mysql", os.Getenv("CHECKPOINT_MYSQL_DSN"))
c := MysqlCheckpoint{AppName: "app", StreamName: "stream", TableName: "KinesisConnector.TestCheckpoint", Db: rc}
c.SetCheckpoint("shard", "fakeSeqNum")
rslt := rc.QueryRow("SELECT sequence_number FROM KinesisConnector.TestCheckpoint WHERE checkpoint_key = ?", k)
var sequenceNumber string
err := rslt.Scan(&sequenceNumber)
if err != nil {
t.Fatalf("cannot scan row for checkpoint key, %s", err)
}
if sequenceNumber != "fakeSeqNum" {
t.Errorf("SetCheckpoint() = %v, want %v", "fakeSeqNum", sequenceNumber)
}
rc.Exec("DELETE FROM KinesisConnector.TestCheckpoint WHERE checkpoint_key = ?", k)
}