show_test.go 5.0 KB
Newer Older
martianzhang's avatar
martianzhang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/*
 * Copyright 2018 Xiaomi, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package database

import (
	"fmt"
	"testing"

23 24
	"github.com/XiaoMi/soar/common"

martianzhang's avatar
martianzhang 已提交
25 26 27 28
	"github.com/kr/pretty"
)

func TestShowTableStatus(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
29
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
30 31 32
	orgDatabase := connTest.Database
	connTest.Database = "sakila"
	ts, err := connTest.ShowTableStatus("film")
martianzhang's avatar
martianzhang 已提交
33 34 35
	if err != nil {
		t.Error("ShowTableStatus Error: ", err)
	}
36 37 38
	if string(ts.Rows[0].Engine) != "InnoDB" {
		t.Error("film table should be InnoDB engine")
	}
martianzhang's avatar
martianzhang 已提交
39
	pretty.Println(ts)
40

martianzhang's avatar
martianzhang 已提交
41 42 43 44 45 46 47 48 49 50
	// FIXME: too much column NULL ABLE
	//connTest.Database = "sakila"
	//ts, err = connTest.ShowTableStatus("actor_info")
	//if err != nil {
	//	t.Error("ShowTableStatus Error: ", err)
	//}
	//if string(ts.Rows[0].Comment) != "VIEW" {
	//	t.Error("actor_info should be VIEW", ts.Rows[0].Comment)
	//}
	//pretty.Println(ts)
51
	connTest.Database = orgDatabase
martianzhang's avatar
martianzhang 已提交
52
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
53 54 55
}

func TestShowTables(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
56
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
57 58
	orgDatabase := connTest.Database
	connTest.Database = "sakila"
martianzhang's avatar
martianzhang 已提交
59 60 61 62
	ts, err := connTest.ShowTables()
	if err != nil {
		t.Error("ShowTableStatus Error: ", err)
	}
63 64 65 66 67 68 69 70 71 72

	err = common.GoldenDiff(func() {
		for _, table := range ts {
			fmt.Println(table)
		}
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}
	connTest.Database = orgDatabase
martianzhang's avatar
martianzhang 已提交
73
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
74 75
}

martianzhang's avatar
martianzhang 已提交
76
func TestShowCreateDatabase(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
77
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
78 79 80 81 82 83
	err := common.GoldenDiff(func() {
		fmt.Println(connTest.ShowCreateDatabase("sakila"))
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}
martianzhang's avatar
martianzhang 已提交
84
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
85 86
}

martianzhang's avatar
martianzhang 已提交
87
func TestShowCreateTable(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
88
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
89 90
	orgDatabase := connTest.Database
	connTest.Database = "sakila"
martianzhang's avatar
martianzhang 已提交
91 92
	tables := []string{
		"film",
martianzhang's avatar
martianzhang 已提交
93
		"category",
martianzhang's avatar
martianzhang 已提交
94
		"customer_list",
martianzhang's avatar
martianzhang 已提交
95
		"inventory",
martianzhang's avatar
martianzhang 已提交
96
	}
martianzhang's avatar
martianzhang 已提交
97 98 99 100 101 102 103
	err := common.GoldenDiff(func() {
		for _, table := range tables {
			ts, err := connTest.ShowCreateTable(table)
			if err != nil {
				t.Error("ShowCreateTable Error: ", err)
			}
			fmt.Println(ts)
104 105 106 107 108 109
		}
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}
	connTest.Database = orgDatabase
martianzhang's avatar
martianzhang 已提交
110
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
111 112 113
}

func TestShowIndex(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
114
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
115 116 117
	orgDatabase := connTest.Database
	connTest.Database = "sakila"
	ti, err := connTest.ShowIndex("film")
martianzhang's avatar
martianzhang 已提交
118 119 120
	if err != nil {
		t.Error("ShowIndex Error: ", err)
	}
121 122 123 124 125 126 127 128 129

	err = common.GoldenDiff(func() {
		pretty.Println(ti)
		pretty.Println(ti.FindIndex(IndexKeyName, "idx_title"))
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}
	connTest.Database = orgDatabase
martianzhang's avatar
martianzhang 已提交
130
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
131 132 133
}

func TestShowColumns(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
134
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
135 136
	orgDatabase := connTest.Database
	connTest.Database = "sakila"
137
	ti, err := connTest.ShowColumns("actor_info")
martianzhang's avatar
martianzhang 已提交
138 139 140
	if err != nil {
		t.Error("ShowColumns Error: ", err)
	}
141 142 143 144 145 146 147 148 149

	err = common.GoldenDiff(func() {
		pretty.Println(ti)
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}

	connTest.Database = orgDatabase
martianzhang's avatar
martianzhang 已提交
150
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
151 152 153
}

func TestFindColumn(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
154
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
155
	ti, err := connTest.FindColumn("film_id", "sakila", "film")
martianzhang's avatar
martianzhang 已提交
156 157 158
	if err != nil {
		t.Error("FindColumn Error: ", err)
	}
159 160 161 162 163 164
	err = common.GoldenDiff(func() {
		pretty.Println(ti)
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
	}
martianzhang's avatar
martianzhang 已提交
165
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
166 167 168
}

func TestIsFKey(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
169
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
170 171 172
	if !connTest.IsForeignKey("sakila", "film", "language_id") {
		t.Error("want True. got false")
	}
martianzhang's avatar
martianzhang 已提交
173
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
174 175 176
}

func TestShowReference(t *testing.T) {
martianzhang's avatar
martianzhang 已提交
177
	common.Log.Debug("Entering function: %s", common.GetFunctionName())
178
	rv, err := connTest.ShowReference("sakila", "film")
martianzhang's avatar
martianzhang 已提交
179 180 181 182
	if err != nil {
		t.Error("ShowReference Error: ", err)
	}

183 184 185 186 187
	err = common.GoldenDiff(func() {
		pretty.Println(rv)
	}, t.Name(), update)
	if err != nil {
		t.Error(err)
martianzhang's avatar
martianzhang 已提交
188
	}
martianzhang's avatar
martianzhang 已提交
189
	common.Log.Debug("Exiting function: %s", common.GetFunctionName())
martianzhang's avatar
martianzhang 已提交
190
}