1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
package integration
import (
"context"
"testing"
"time"
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/linode/linodego"
)
var ignoreDatabaseTimestampes = cmpopts.IgnoreFields(linodego.Database{}, "Created", "Updated")
func TestDatabase_Engine(t *testing.T) {
client, teardown := createTestClient(t, "fixtures/TestDatabase_Engine")
defer teardown()
engines, err := client.ListDatabaseEngines(context.Background(), nil)
if err != nil {
t.Errorf("Failed to get list of Database Engines: %v", err)
}
if len(engines) <= 0 {
t.Fatal("failed to get list of database engines")
}
engine := engines[0]
response, err := client.GetDatabaseEngine(context.Background(), nil, engine.ID)
if err != nil {
t.Errorf("Failed to get one database Engine: %v", err)
}
if engine.Engine != response.Engine {
t.Fatal("received engine does not match source")
}
}
func TestDatabase_Type(t *testing.T) {
client, teardown := createTestClient(t, "fixtures/TestDatabase_Type")
defer teardown()
types, err := client.ListDatabaseTypes(context.Background(), nil)
if err != nil {
t.Errorf("Failed to get list of Database Types: %v", err)
}
if len(types) <= 0 {
t.Fatal("failed to get list of database Types")
}
aType := types[0]
response, err := client.GetDatabaseType(context.Background(), nil, aType.ID)
if err != nil {
t.Errorf("Failed to get one database Type: %v", err)
}
if aType.Label != response.Label {
t.Fatal("received type does not match source")
}
if response.Engines.MySQL[0].Quantity != aType.Engines.MySQL[0].Quantity {
t.Fatalf("mismatched type quantity: %d, %d", response.Engines.MySQL[0].Quantity, aType.Engines.MySQL[0].Quantity)
}
}
func TestDatabase_List(t *testing.T) {
client, database, teardown, err := setupPostgresDatabase(t, nil, "fixtures/TestDatabase_List")
if err != nil {
t.Error(err)
}
defer teardown()
dbs, err := client.ListDatabases(context.Background(), nil)
if len(dbs) == 0 {
t.Errorf("Expected a list of Databases, but got none: %v", err)
}
if err != nil {
t.Errorf("Error listing Databases, expected struct, got error %v", err)
}
success := false
for _, db := range dbs {
if db.ID == database.ID {
success = true
}
}
if !success {
t.Error("database not in database list")
}
}
func waitForDatabaseUpdated(t *testing.T, client *linodego.Client, dbID int,
dbType linodego.DatabaseEngineType, minStart *time.Time,
) {
_, err := client.WaitForEventFinished(context.Background(), dbID, linodego.EntityDatabase,
linodego.ActionDatabaseUpdate, *minStart, 1200)
if err != nil {
t.Fatalf("failed to wait for database update: %s", err)
}
// Sometimes the event has finished but the status hasn't caught up
err = client.WaitForDatabaseStatus(context.Background(), dbID, dbType,
linodego.DatabaseStatusActive, 120)
if err != nil {
t.Fatalf("failed to wait for database active: %s", err)
}
}
|