diff --git a/pkg/cluster/baremetal/create.go b/pkg/cluster/baremetal/create.go index ffa54ebb..f1f39c3f 100644 --- a/pkg/cluster/baremetal/create.go +++ b/pkg/cluster/baremetal/create.go @@ -52,7 +52,7 @@ func (c *Cluster) Create(ctx context.Context, options *opt.CreateOptions) error return nil } - if c.useMemoryMeta { + if !c.useMemoryMeta { if err := withSpinner("Etcd Cluster", c.createEtcdCluster); err != nil { return err } diff --git a/tests/e2e/greptimedbcluster_baremetal_test.go b/tests/e2e/greptimedbcluster_baremetal_test.go new file mode 100644 index 00000000..a36ed3ae --- /dev/null +++ b/tests/e2e/greptimedbcluster_baremetal_test.go @@ -0,0 +1,105 @@ +/* + * Copyright 2023 Greptime Team + * + * 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 e2e + +import ( + "fmt" + "io" + "net" + "os" + "os/exec" + "time" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("Basic test of greptimedb cluster in baremetal", Ordered, func() { + It("Bootstrap cluster in baremteal", func() { + var err error + createcmd := newCreateClusterinBaremetalCommand() + + err = createcmd.Start() + Expect(err).NotTo(HaveOccurred(), "failed to create cluster in baremetal") + + for { + if conn, err := net.DialTimeout("tcp", "localhost:4000", 2*time.Second); err == nil { + defer conn.Close() + break + } + } + + err = getClusterinBaremetal() + Expect(err).NotTo(HaveOccurred(), "failed to get cluster in baremetal") + + logFile, err := os.Open("/home/runner/.gtctl/mycluster/logs/frontend.0/log") + if err != nil { + fmt.Printf("Failed to open log file: %v\n", err) + return + } + defer logFile.Close() + + // 将文件内容拷贝到标准输出 + if _, err := io.Copy(os.Stdout, logFile); err != nil { + fmt.Printf("Failed to copy log file content to stdout: %v\n", err) + } + + err = createcmd.Process.Kill() + Expect(err).NotTo(HaveOccurred(), "failed to kill create cluster process") + + err = createcmd.Wait() + if err != nil { + if _, ok := err.(*exec.ExitError); ok { + fmt.Printf("the process is terminated\n") + } else { + fmt.Printf("process terminated with error: %v,failed to terminated the process\n", err) + } + } else { + fmt.Printf("failed to terminated the process\n") + } + + err = deleteClusterinBaremetal() + Expect(err).NotTo(HaveOccurred(), "failed to delete cluster in baremetal") + }) +}) + +func newCreateClusterinBaremetalCommand() exec.Cmd { + cmd := exec.Command("../../bin/gtctl", "cluster", "create", "mycluster", "--bare-metal") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return *cmd +} + +func getClusterinBaremetal() error { + cmd := exec.Command("../../bin/gtctl", "cluster", "get", "mycluster", "--bare-metal") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + return err + } + return nil +} + +func deleteClusterinBaremetal() error { + cmd := exec.Command("../../bin/gtctl", "cluster", "delete", "mycluster", "--tear-down-etcd", "--bare-metal") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + return err + } + return nil +} diff --git a/tests/e2e/greptimedbcluster_test.go b/tests/e2e/greptimedbcluster_test.go index 30b35f2d..76b799c9 100644 --- a/tests/e2e/greptimedbcluster_test.go +++ b/tests/e2e/greptimedbcluster_test.go @@ -24,26 +24,25 @@ import ( "os/exec" "time" + "github.com/go-sql-driver/mysql" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - - "github.com/go-sql-driver/mysql" "k8s.io/klog/v2" ) const ( createTableSQL = `CREATE TABLE dist_table ( - ts TIMESTAMP DEFAULT current_timestamp(), - n INT, - row_id INT, - TIME INDEX (ts), - PRIMARY KEY(n) - ) - PARTITION ON COLUMNS (n) ( - n < 5, - n >= 5 AND n < 9, - n >= 9 - )` + ts TIMESTAMP DEFAULT current_timestamp(), + n INT, + row_id INT, + TIME INDEX (ts), + PRIMARY KEY(n) + ) + PARTITION ON COLUMNS (n) ( + n < 5, + n >= 5 AND n < 9, + n >= 9 + )` insertDataSQLStr = "INSERT INTO dist_table(n, row_id) VALUES (%d, %d)" @@ -57,13 +56,14 @@ var ( ) // TestData is the schema of test data in SQL table. + type TestData struct { timestamp string n int32 rowID int32 } -var _ = Describe("Basic test of greptimedb cluster", func() { +var _ = Describe("Basic test of greptimedb cluster", Ordered, func() { It("Bootstrap cluster", func() { var err error err = createCluster() @@ -102,7 +102,6 @@ var _ = Describe("Basic test of greptimedb cluster", func() { if err != nil { return err } - return nil }, 30*time.Second, time.Second).ShouldNot(HaveOccurred()) @@ -136,6 +135,9 @@ var _ = Describe("Basic test of greptimedb cluster", func() { } Expect(len(data) == testRowIDNum).Should(BeTrue(), "get the wrong data from db") + err = conn.Close() + Expect(err).NotTo(HaveOccurred(), "failed to close SQL connection") + err = deleteCluster() Expect(err).NotTo(HaveOccurred(), "failed to delete cluster") })