Skip to content

Commit bf8c028

Browse files
authored
Merge pull request #390 from jbowen93/main
2 parents 91e0253 + be85542 commit bf8c028

File tree

5 files changed

+168
-22
lines changed

5 files changed

+168
-22
lines changed

Diff for: CHANGELOG-PENDING.md

+2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Month, DD, YYYY
4242
- [docker: Created `docker/` dir with `Dockerfile` and `entrypoint.sh` script](https://github.com/celestiaorg/celestia-node/pull/295) [@jbowen93](https://github.com/jbowen93)
4343
- [chore(share): handle rows concurrently in GetSharesByNamespace #241](https://github.com/celestiaorg/celestia-node/pull/241) [@vgonkivs](https://github.com/vgonkivs)
4444
- [ci: adding data race detector action](https://github.com/celestiaorg/celestia-node/pull/289) [@Bidon15](https://github.com/Bidon15)
45+
- [node: add the cmdnode.HeadersFlags() to the Bridge Node's init and start commands #390](https://github.com/celestiaorg/celestia-node/pull/390) [@jbowen93](https://github.com/jbowen93)
4546

4647
### BUG FIXES
4748

@@ -55,6 +56,7 @@ Month, DD, YYYY
5556
- [ci: increase tokens ratio for dupl to fix false positive scenarios](https://github.com/celestiaorg/celestia-node/pull/314) [@Bidon15](https://github.com/Bidon15)
5657
- [node: Wrap datastore with mutex to prevent data race](https://github.com/celestiaorg/celestia-node/pull/325) [@Bidon15](https://github.com/Bidon15)
5758
- [ci: update Docker entrypoint.sh to use new `store.path` flag name](https://github.com/celestiaorg/celestia-node/pull/337) [@jbowen93](https://github.com/jbowen93)
59+
- [docker: update docker/entrypoint.sh to use new `node.store` flag replacing `store.path` #390](https://github.com/celestiaorg/celestia-node/pull/390) [@jbowen93 ](https://github.com/jbowen93)
5860

5961
### MISCELLANEOUS
6062

Diff for: cmd/celestia/bridge.go

+7
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@ func init() {
1616
cmdnode.NodeFlags(node.Bridge),
1717
cmdnode.P2PFlags(),
1818
cmdnode.CoreFlags(),
19+
cmdnode.TrustedHashFlags(),
1920
cmdnode.MiscFlags(),
2021
),
2122
cmdnode.Start(
2223
cmdnode.NodeFlags(node.Bridge),
2324
cmdnode.P2PFlags(),
2425
cmdnode.CoreFlags(),
26+
cmdnode.TrustedHashFlags(),
2527
cmdnode.MiscFlags(),
2628
),
2729
)
@@ -53,6 +55,11 @@ var bridgeCmd = &cobra.Command{
5355
return err
5456
}
5557

58+
err = cmdnode.ParseTrustedHashFlags(cmd, env)
59+
if err != nil {
60+
return err
61+
}
62+
5663
err = cmdnode.ParseMiscFlags(cmd)
5764
if err != nil {
5865
return err

Diff for: cmd/celestia/cmd_test.go

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"context"
6+
"io/ioutil"
7+
"os"
8+
"testing"
9+
10+
"github.com/stretchr/testify/require"
11+
12+
cmdnode "github.com/celestiaorg/celestia-node/cmd"
13+
)
14+
15+
func TestLight(t *testing.T) {
16+
// Run the tests in a temporary directory
17+
tmpDir, err := ioutil.TempDir("", "light")
18+
require.NoError(t, err, "error creating a temporary test directory")
19+
testDir, err := os.Getwd()
20+
require.NoError(t, err, "error getting the current working directory")
21+
err = os.Chdir(tmpDir)
22+
require.NoError(t, err, "error changing to the temporary test directory")
23+
24+
t.Run("init", func(t *testing.T) {
25+
output := &bytes.Buffer{}
26+
rootCmd.SetOut(output)
27+
rootCmd.SetArgs([]string{
28+
"bridge",
29+
"--node.store", ".celestia-light",
30+
"init",
31+
})
32+
err := rootCmd.ExecuteContext(cmdnode.WithEnv(context.Background()))
33+
require.NoError(t, err)
34+
})
35+
36+
t.Cleanup(func() {
37+
if err := os.Chdir(testDir); err != nil {
38+
t.Error("error resetting:", err)
39+
}
40+
})
41+
42+
// TODO @jbowen93: Commented out until a dry-run option can be implemented
43+
/*
44+
t.Run("start", func(t *testing.T) {
45+
output := &bytes.Buffer{}
46+
rootCmd.SetOut(output)
47+
rootCmd.SetArgs([]string{
48+
"light",
49+
"--node.store", ".celestia-light",
50+
"start",
51+
"--headers.trusted-peer",
52+
"/ip4/192.167.10.6/tcp/2121/p2p/12D3KooWL8z3KARAYJcmExhDsGwKbjChKeGaJpFPENyADdxmEHzw",
53+
"--headers.trusted-hash",
54+
"54A8B66D2BEF13850D67C8D474E196BD7485FE5A79989E31B17169371B0A9C96",
55+
})
56+
err := rootCmd.ExecuteContext(cmdnode.WithEnv(context.Background()))
57+
require.NoError(t, err)
58+
})
59+
*/
60+
}
61+
62+
func TestBridge(t *testing.T) {
63+
// Run the tests in a temporary directory
64+
tmpDir, err := ioutil.TempDir("", "bridge")
65+
require.NoError(t, err, "error creating a temporary test directory")
66+
testDir, err := os.Getwd()
67+
require.NoError(t, err, "error getting the current working directory")
68+
err = os.Chdir(tmpDir)
69+
require.NoError(t, err, "error changing to the temporary test directory")
70+
71+
t.Run("init", func(t *testing.T) {
72+
output := &bytes.Buffer{}
73+
rootCmd.SetOut(output)
74+
rootCmd.SetArgs([]string{
75+
"bridge",
76+
"--node.store", ".celestia-bridge",
77+
"init",
78+
})
79+
err := rootCmd.ExecuteContext(cmdnode.WithEnv(context.Background()))
80+
require.NoError(t, err)
81+
})
82+
83+
t.Cleanup(func() {
84+
if err := os.Chdir(testDir); err != nil {
85+
t.Error("error resetting:", err)
86+
}
87+
})
88+
89+
// TODO @jbowen93: Commented out until a dry-run option can be implemented
90+
/*
91+
t.Run("start", func(t *testing.T) {
92+
output := &bytes.Buffer{}
93+
rootCmd.SetOut(output)
94+
rootCmd.SetArgs([]string{
95+
"bridge",
96+
"--node.store", ".celestia-bridge",
97+
"start",
98+
"--core.remote",
99+
"tcp://192.167.10.2:26657",
100+
"--headers.trusted-hash",
101+
"54A8B66D2BEF13850D67C8D474E196BD7485FE5A79989E31B17169371B0A9C96",
102+
})
103+
err := rootCmd.ExecuteContext(cmdnode.WithEnv(context.Background()))
104+
require.NoError(t, err)
105+
})
106+
*/
107+
}

Diff for: cmd/flags_header.go

+51-21
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,67 @@ var (
2020
func HeadersFlags() *flag.FlagSet {
2121
flags := &flag.FlagSet{}
2222

23+
flags.AddFlagSet(TrustedPeerFlags())
24+
flags.AddFlagSet(TrustedHashFlags())
25+
26+
return flags
27+
}
28+
29+
// ParseHeadersFlags parses Header package flags from the given cmd and applies values to Env.
30+
func ParseHeadersFlags(cmd *cobra.Command, env *Env) error {
31+
if err := ParseTrustedHashFlags(cmd, env); err != nil {
32+
return err
33+
}
34+
if err := ParseTrustedPeerFlags(cmd, env); err != nil {
35+
return err
36+
}
37+
38+
return nil
39+
}
40+
41+
// TrustedPeerFlags returns a set of flags related to configuring a `TrustedPeer`.
42+
func TrustedPeerFlags() *flag.FlagSet {
43+
flags := &flag.FlagSet{}
44+
2345
flags.String(
24-
headersTrustedHashFlag,
46+
headersTrustedPeersFlag,
2547
"",
26-
"Hex encoded header hash. Used to subjectively initialize header synchronization",
48+
"Multiaddr of a reliable peer to fetch headers from. (Format: multiformats.io/multiaddr)",
2749
)
2850

29-
flags.StringSlice(
30-
headersTrustedPeersFlag,
31-
make([]string, 0),
32-
"Multiaddr of a reliable peer to fetch headers from. (Format: multiformats.io/multiaddr)",
51+
return flags
52+
}
53+
54+
// ParseTrustedPeerFlags parses Header package flags from the given cmd and applies values to Env.
55+
func ParseTrustedPeerFlags(cmd *cobra.Command, env *Env) error {
56+
tpeer := cmd.Flag(headersTrustedPeersFlag).Value.String()
57+
if tpeer != "" {
58+
_, err := multiaddr.NewMultiaddr(tpeer)
59+
if err != nil {
60+
return fmt.Errorf("cmd: while parsing '%s': %w", headersTrustedPeersFlag, err)
61+
}
62+
63+
env.AddOptions(node.WithTrustedPeer(tpeer))
64+
}
65+
66+
return nil
67+
}
68+
69+
// TrustedHashFlags returns a set of flags related to configuring a `TrustedHash`.
70+
func TrustedHashFlags() *flag.FlagSet {
71+
flags := &flag.FlagSet{}
72+
73+
flags.String(
74+
headersTrustedHashFlag,
75+
"",
76+
"Hex encoded header hash. Used to subjectively initialize header synchronization",
3377
)
3478

3579
return flags
3680
}
3781

3882
// ParseHeadersFlags parses Header package flags from the given cmd and applies values to Env.
39-
func ParseHeadersFlags(cmd *cobra.Command, env *Env) error {
83+
func ParseTrustedHashFlags(cmd *cobra.Command, env *Env) error {
4084
hash := cmd.Flag(headersTrustedHashFlag).Value.String()
4185
if hash != "" {
4286
_, err := hex.DecodeString(hash)
@@ -47,19 +91,5 @@ func ParseHeadersFlags(cmd *cobra.Command, env *Env) error {
4791
env.AddOptions(node.WithTrustedHash(hash))
4892
}
4993

50-
tpeers, err := cmd.Flags().GetStringSlice(headersTrustedPeersFlag)
51-
if err != nil {
52-
return err
53-
}
54-
if len(tpeers) != 0 {
55-
for _, tpeer := range tpeers {
56-
_, err := multiaddr.NewMultiaddr(tpeer)
57-
if err != nil {
58-
return fmt.Errorf("cmd: while parsing '%s' with peer addr '%s': %w", headersTrustedPeersFlag, tpeer, err)
59-
}
60-
env.AddOptions(node.WithTrustedPeer(tpeer))
61-
}
62-
}
63-
6494
return nil
6595
}

Diff for: docker/entrypoint.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
set -e
44

55
if [ "$1" = 'celestia' ]; then
6-
./celestia "${NODE_TYPE}" --store.path /celestia-"${NODE_TYPE}" init
6+
./celestia "${NODE_TYPE}" --node.store /celestia-"${NODE_TYPE}" init
77

88
exec ./"$@" "--"
99
fi

0 commit comments

Comments
 (0)