This is an automated email from the ASF dual-hosted git repository.

maxyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry-go-libs.git

commit ad8a6bb595451b811851803b80ea028831b4e760
Author: Rakesh Sharma <[email protected]>
AuthorDate: Tue Jan 23 21:23:34 2024 +0530

    Updated GetSegmentConfiguration() to populate all remaining fields of 
segment configuration
    
    Updated GetSegmentConfiguration() API to popuate following remaining
    fields:
     - preferred_role
     - mode
     - status
     - address
    
    same fields also added in SegConfig struct in the same order as they
    appear in gp_segment_configuration table.
    
    Updated unit test cases to deep compair all the configuration fields.
---
 cluster/cluster.go      | 24 +++++++++++++-----
 cluster/cluster_test.go | 66 +++++++++++++++++++------------------------------
 2 files changed, 44 insertions(+), 46 deletions(-)

diff --git a/cluster/cluster.go b/cluster/cluster.go
index 6f406d8..8752d59 100644
--- a/cluster/cluster.go
+++ b/cluster/cluster.go
@@ -46,12 +46,16 @@ type Cluster struct {
 }
 
 type SegConfig struct {
-       DbID      int
-       ContentID int
-       Role      string
-       Port      int
-       Hostname  string
-       DataDir   string
+       DbID          int
+       ContentID     int
+       Role          string
+       PreferredRole string
+       Mode          string
+       Status        string
+       Port          int
+       Hostname      string
+       Address       string
+       DataDir       string
 }
 
 /*
@@ -522,8 +526,12 @@ SELECT
        s.dbid,
        s.content as contentid,
        s.role,
+       s.preferred_role as preferredrole,
+       s.mode,
+       s.status,
        s.port,
        s.hostname,
+       s.address,
        e.fselocation as datadir
 FROM gp_segment_configuration s
 JOIN pg_filespace_entry e ON s.dbid = e.fsedbid
@@ -542,8 +550,12 @@ SELECT
        dbid,
        content as contentid,
        role,
+       preferred_role as preferredrole,
+       mode,
+       status,
        port,
        hostname,
+       address,
        datadir
 FROM gp_segment_configuration
 %s
diff --git a/cluster/cluster_test.go b/cluster/cluster_test.go
index 6572d53..9cd825b 100644
--- a/cluster/cluster_test.go
+++ b/cluster/cluster_test.go
@@ -76,10 +76,14 @@ var _ = Describe("cluster/cluster tests", func() {
                })
        })
        Describe("GetSegmentConfiguration", func() {
-               header := []string{"contentid", "hostname", "datadir"}
-               localSegOne := []driver.Value{"0", "localhost", "/data/gpseg0"}
-               localSegTwo := []driver.Value{"1", "localhost", "/data/gpseg1"}
-               remoteSegOne := []driver.Value{"2", "remotehost", 
"/data/gpseg2"}
+               header := []string{"dbid", "contentid", "role", 
"preferredrole", "mode", "status", "port", "hostname", "address", "datadir"}
+               localSegOneValue := cluster.SegConfig{1, 0, "p", "p", "s", "u", 
6002, "localhost", "127.0.0.1", "/data/gpseg0"}
+               localSegTwoValue := cluster.SegConfig{2, 1, "m", "m", "s", "u", 
6003, "localhost", "127.0.0.1", "/data/gpseg1"}
+               remoteSegOneValue := cluster.SegConfig{3, 2, "p", "m", "s", 
"u", 6004, "remotehost", "127.0.0.1", "/data/gpseg2"}
+
+               localSegOne := []driver.Value{localSegOneValue.DbID, 
localSegOneValue.ContentID, localSegOneValue.Role, 
localSegOneValue.PreferredRole, localSegOneValue.Mode, localSegOneValue.Status, 
localSegOneValue.Port, localSegOneValue.Hostname, localSegOneValue.Address, 
localSegOneValue.DataDir}
+               localSegTwo := []driver.Value{localSegTwoValue.DbID, 
localSegTwoValue.ContentID, localSegTwoValue.Role, 
localSegTwoValue.PreferredRole, localSegTwoValue.Mode, localSegTwoValue.Status, 
localSegTwoValue.Port, localSegTwoValue.Hostname, localSegTwoValue.Address, 
localSegTwoValue.DataDir}
+               remoteSegOne := []driver.Value{remoteSegOneValue.DbID, 
remoteSegOneValue.ContentID, remoteSegOneValue.Role, 
remoteSegOneValue.PreferredRole, remoteSegOneValue.Mode, 
remoteSegOneValue.Status, remoteSegOneValue.Port, remoteSegOneValue.Hostname, 
remoteSegOneValue.Address, remoteSegOneValue.DataDir}
 
                It("returns only primaries for a single-host, single-segment 
cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...)
@@ -87,8 +91,7 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(1))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
                })
                It("returns only primaries for a single-host, multi-segment 
cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...)
@@ -96,10 +99,8 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(2))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
                })
                It("returns only primaries for a multi-host, multi-segment 
cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...).AddRow(remoteSegOne...)
@@ -107,12 +108,9 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(3))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
-                       Expect(results[2].DataDir).To(Equal("/data/gpseg2"))
-                       Expect(results[2].Hostname).To(Equal("remotehost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
+                       Expect(results[2]).To(Equal(remoteSegOneValue))
                })
                It("returns primaries and mirrors for a single-host, 
single-segment cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...)
@@ -120,8 +118,7 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(1))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
                })
                It("returns primaries and mirrors for a single-host, 
multi-segment cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...)
@@ -129,10 +126,8 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(2))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
                })
                It("returns primaries and mirrors for a multi-host, 
multi-segment cluster", func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...).AddRow(remoteSegOne...)
@@ -140,12 +135,9 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(3))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
-                       Expect(results[2].DataDir).To(Equal("/data/gpseg2"))
-                       Expect(results[2].Hostname).To(Equal("remotehost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
+                       Expect(results[2]).To(Equal(remoteSegOneValue))
                })
                It("returns mirrors for a single-host, single-segment cluster", 
func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...)
@@ -153,8 +145,7 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(1))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
                })
                It("returns mirrors for a single-host, multi-segment cluster", 
func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...)
@@ -162,10 +153,8 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(2))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
                })
                It("returns mirrors for a multi-host, multi-segment cluster", 
func() {
                        fakeResult := 
sqlmock.NewRows(header).AddRow(localSegOne...).AddRow(localSegTwo...).AddRow(remoteSegOne...)
@@ -173,12 +162,9 @@ var _ = Describe("cluster/cluster tests", func() {
                        results, err := 
cluster.GetSegmentConfiguration(connection, true, true)
                        Expect(err).ToNot(HaveOccurred())
                        Expect(len(results)).To(Equal(3))
-                       Expect(results[0].DataDir).To(Equal("/data/gpseg0"))
-                       Expect(results[0].Hostname).To(Equal("localhost"))
-                       Expect(results[1].DataDir).To(Equal("/data/gpseg1"))
-                       Expect(results[1].Hostname).To(Equal("localhost"))
-                       Expect(results[2].DataDir).To(Equal("/data/gpseg2"))
-                       Expect(results[2].Hostname).To(Equal("remotehost"))
+                       Expect(results[0]).To(Equal(localSegOneValue))
+                       Expect(results[1]).To(Equal(localSegTwoValue))
+                       Expect(results[2]).To(Equal(remoteSegOneValue))
                })
        })
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to