Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
roachtest: discover the adminUIPort for acceptance/gossip/restart-nod…
Browse files Browse the repository at this point in the history
…e-one

This test relies on assumption `adminUIPort = SQLPort + 1` but adminui is
temporarily hardcoded as 26258 while SQLPort will be dynamically assigned
without the following override. This changes it to discover the port instead
of relying on this assumption.

Release note: None
DarrylWong committed Jan 12, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 8025622 commit 13e19e9
Showing 4 changed files with 37 additions and 3 deletions.
6 changes: 6 additions & 0 deletions pkg/cmd/roachtest/cluster.go
Original file line number Diff line number Diff line change
@@ -2434,6 +2434,12 @@ func (c *clusterImpl) ExternalAdminUIAddr(
return c.adminUIAddr(ctx, l, node, true)
}

func (c *clusterImpl) AdminUIPorts(
ctx context.Context, l *logger.Logger, nodes option.NodeListOption,
) ([]int, error) {
return roachprod.AdminPorts(ctx, l, c.MakeNodes(nodes), c.IsSecure())
}

func (c *clusterImpl) adminUIAddr(
ctx context.Context, l *logger.Logger, node option.NodeListOption, external bool,
) ([]string, error) {
3 changes: 2 additions & 1 deletion pkg/cmd/roachtest/cluster/cluster_interface.go
Original file line number Diff line number Diff line change
@@ -86,10 +86,11 @@ type Cluster interface {
Conn(ctx context.Context, l *logger.Logger, node int, opts ...func(*option.ConnOption)) *gosql.DB
ConnE(ctx context.Context, l *logger.Logger, node int, opts ...func(*option.ConnOption)) (*gosql.DB, error)

// URLs for the Admin UI.
// URLs and Ports for the Admin UI.

InternalAdminUIAddr(ctx context.Context, l *logger.Logger, node option.NodeListOption) ([]string, error)
ExternalAdminUIAddr(ctx context.Context, l *logger.Logger, node option.NodeListOption) ([]string, error)
AdminUIPorts(ctx context.Context, l *logger.Logger, node option.NodeListOption) ([]int, error)

// Running commands on nodes.

9 changes: 7 additions & 2 deletions pkg/cmd/roachtest/tests/gossip.go
Original file line number Diff line number Diff line change
@@ -425,13 +425,18 @@ SELECT count(replicas)
t.L().Printf("killing all nodes\n")
c.Stop(ctx, t.L(), option.DefaultStopOpts())

adminPorts, err := c.AdminUIPorts(ctx, t.L(), c.Node(1))
if err != nil {
t.Fatal(err)
}

// Restart node 1, but have it listen on a different port for internal
// connections. This will require node 1 to reach out to the other nodes in
// the cluster for gossip info.
err := c.RunE(ctx, c.Node(1),
err = c.RunE(ctx, c.Node(1),
` ./cockroach start --insecure --background --store={store-dir} `+
`--log-dir={log-dir} --cache=10% --max-sql-memory=10% `+
`--listen-addr=:$[{pgport:1}+1000] --http-port=$[{pgport:1}+1] `+
fmt.Sprintf(`--listen-addr=:$[{pgport:1}+1000] --http-port=%d `, adminPorts[0])+
`--join={pghost:1}:{pgport:1} `+
`--advertise-addr={pghost:1}:$[{pgport:1}+1000] `+
`> {log-dir}/cockroach.stdout 2> {log-dir}/cockroach.stderr`)
22 changes: 22 additions & 0 deletions pkg/roachprod/roachprod.go
Original file line number Diff line number Diff line change
@@ -1049,6 +1049,28 @@ func AdminURL(
return urlGenerator(ctx, c, l, c.TargetNodes(), uConfig)
}

// AdminPorts finds the AdminUI ports for a cluster.
func AdminPorts(
ctx context.Context, l *logger.Logger, clusterName string, secure bool,
) ([]int, error) {
if err := LoadClusters(); err != nil {
return nil, err
}
c, err := newCluster(l, clusterName, install.SecureOption(secure))
if err != nil {
return nil, err
}
var ports []int
for _, node := range c.Nodes {
port, err := c.NodeUIPort(ctx, node)
if err != nil {
return nil, errors.Wrapf(err, "Error discovering UI Port for node %d", node)
}
ports = append(ports, port)
}
return ports, nil
}

// PprofOpts specifies the options needed by Pprof().
type PprofOpts struct {
Heap bool

0 comments on commit 13e19e9

Please sign in to comment.