@cryptotaxi247 / kubo / commits / 5f5c16e2c

Merge branch 'master' into merge-release-v0.19.2

Henrique Dias committed May 3, 2023 at 12:57 UTC 5f5c16e2cc7a42ca64f2ad31bd46591a5a345c79
8 files changed +261 -315
.github/CODEOWNERS
+3
@@ -2,6 +2,9 @@
2 # request that modifies code that they own. Code owners are not automatically
3 # requested to review draft pull requests.
4
5 +# Default
6 +* @ipfs/kubo-maintainers
7 +
8 # HTTP Gateway
9 core/corehttp/ @lidel
10 test/sharness/*gateway*.sh @lidel
test/cli/testutils/random_files.go new
+116
@@ -0,0 +1,116 @@
1 +package testutils
2 +
3 +import (
4 + "fmt"
5 + "io"
6 + "math/rand"
7 + "os"
8 + "path"
9 + "time"
10 +)
11 +
12 +var AlphabetEasy = []rune("abcdefghijklmnopqrstuvwxyz01234567890-_")
13 +var AlphabetHard = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890!@#$%^&*()-_+= ;.,<>'\"[]{}() ")
14 +
15 +type RandFiles struct {
16 + Rand *rand.Rand
17 + FileSize int // the size per file.
18 + FilenameSize int
19 + Alphabet []rune // for filenames
20 +
21 + FanoutDepth int // how deep the hierarchy goes
22 + FanoutFiles int // how many files per dir
23 + FanoutDirs int // how many dirs per dir
24 +
25 + RandomSize bool // randomize file sizes
26 + RandomFanout bool // randomize fanout numbers
27 +}
28 +
29 +func NewRandFiles() *RandFiles {
30 + return &RandFiles{
31 + Rand: rand.New(rand.NewSource(time.Now().UnixNano())),
32 + FileSize: 4096,
33 + FilenameSize: 16,
34 + Alphabet: AlphabetEasy,
35 + FanoutDepth: 2,
36 + FanoutDirs: 5,
37 + FanoutFiles: 10,
38 + RandomSize: true,
39 + }
40 +}
41 +
42 +func (r *RandFiles) WriteRandomFiles(root string, depth int) error {
43 + numfiles := r.FanoutFiles
44 + if r.RandomFanout {
45 + numfiles = rand.Intn(r.FanoutFiles) + 1
46 + }
47 +
48 + for i := 0; i < numfiles; i++ {
49 + if err := r.WriteRandomFile(root); err != nil {
50 + return err
51 + }
52 + }
53 +
54 + if depth+1 <= r.FanoutDepth {
55 + numdirs := r.FanoutDirs
56 + if r.RandomFanout {
57 + numdirs = r.Rand.Intn(numdirs) + 1
58 + }
59 +
60 + for i := 0; i < numdirs; i++ {
61 + if err := r.WriteRandomDir(root, depth+1); err != nil {
62 + return err
63 + }
64 + }
65 + }
66 +
67 + return nil
68 +}
69 +
70 +func (r *RandFiles) RandomFilename(length int) string {
71 + b := make([]rune, length)
72 + for i := range b {
73 + b[i] = r.Alphabet[r.Rand.Intn(len(r.Alphabet))]
74 + }
75 + return string(b)
76 +}
77 +
78 +func (r *RandFiles) WriteRandomFile(root string) error {
79 + filesize := int64(r.FileSize)
80 + if r.RandomSize {
81 + filesize = r.Rand.Int63n(filesize) + 1
82 + }
83 +
84 + n := rand.Intn(r.FilenameSize-4) + 4
85 + name := r.RandomFilename(n)
86 + filepath := path.Join(root, name)
87 + f, err := os.Create(filepath)
88 + if err != nil {
89 + return fmt.Errorf("creating random file: %w", err)
90 + }
91 +
92 + if _, err := io.CopyN(f, r.Rand, filesize); err != nil {
93 + return fmt.Errorf("copying random file: %w", err)
94 + }
95 +
96 + return f.Close()
97 +}
98 +
99 +func (r *RandFiles) WriteRandomDir(root string, depth int) error {
100 + if depth > r.FanoutDepth {
101 + return nil
102 + }
103 +
104 + n := rand.Intn(r.FilenameSize-4) + 4
105 + name := r.RandomFilename(n)
106 + root = path.Join(root, name)
107 + if err := os.MkdirAll(root, 0755); err != nil {
108 + return fmt.Errorf("creating random dir: %w", err)
109 + }
110 +
111 + err := r.WriteRandomFiles(root, depth)
112 + if err != nil {
113 + return fmt.Errorf("writing random files in random dir: %w", err)
114 + }
115 + return nil
116 +}
test/cli/transports_test.go new
+127
@@ -0,0 +1,127 @@
1 +package cli
2 +
3 +import (
4 + "os"
5 + "path/filepath"
6 + "testing"
7 +
8 + "github.com/ipfs/kubo/config"
9 + "github.com/ipfs/kubo/test/cli/harness"
10 + "github.com/ipfs/kubo/test/cli/testutils"
11 + "github.com/stretchr/testify/assert"
12 + "github.com/stretchr/testify/require"
13 +)
14 +
15 +func TestTransports(t *testing.T) {
16 + disableRouting := func(nodes harness.Nodes) {
17 + nodes.ForEachPar(func(n *harness.Node) {
18 + n.UpdateConfig(func(cfg *config.Config) {
19 + cfg.Routing.Type = config.NewOptionalString("none")
20 + cfg.Bootstrap = nil
21 + })
22 + })
23 + }
24 + checkSingleFile := func(nodes harness.Nodes) {
25 + s := testutils.RandomStr(100)
26 + hash := nodes[0].IPFSAddStr(s)
27 + nodes.ForEachPar(func(n *harness.Node) {
28 + val := n.IPFS("cat", hash).Stdout.String()
29 + assert.Equal(t, s, val)
30 + })
31 + }
32 + checkRandomDir := func(nodes harness.Nodes) {
33 + randDir := filepath.Join(nodes[0].Dir, "foobar")
34 + require.NoError(t, os.Mkdir(randDir, 0777))
35 + rf := testutils.NewRandFiles()
36 + rf.FanoutDirs = 3
37 + rf.FanoutFiles = 6
38 + require.NoError(t, rf.WriteRandomFiles(randDir, 4))
39 +
40 + hash := nodes[1].IPFS("add", "-r", "-Q", randDir).Stdout.Trimmed()
41 + nodes.ForEachPar(func(n *harness.Node) {
42 + res := n.RunIPFS("refs", "-r", hash)
43 + assert.Equal(t, 0, res.ExitCode())
44 + })
45 + }
46 +
47 + runTests := func(nodes harness.Nodes) {
48 + checkSingleFile(nodes)
49 + checkRandomDir(nodes)
50 + }
51 +
52 + tcpNodes := func(t *testing.T) harness.Nodes {
53 + nodes := harness.NewT(t).NewNodes(2).Init()
54 + nodes.ForEachPar(func(n *harness.Node) {
55 + n.UpdateConfig(func(cfg *config.Config) {
56 + cfg.Addresses.Swarm = []string{"/ip4/127.0.0.1/tcp/0"}
57 + cfg.Swarm.Transports.Network.QUIC = config.False
58 + cfg.Swarm.Transports.Network.Relay = config.False
59 + cfg.Swarm.Transports.Network.WebTransport = config.False
60 + cfg.Swarm.Transports.Network.Websocket = config.False
61 + })
62 + })
63 + disableRouting(nodes)
64 + return nodes
65 + }
66 +
67 + t.Run("tcp", func(t *testing.T) {
68 + t.Parallel()
69 + nodes := tcpNodes(t).StartDaemons().Connect()
70 + runTests(nodes)
71 + })
72 +
73 + t.Run("tcp with mplex", func(t *testing.T) {
74 + t.Parallel()
75 + nodes := tcpNodes(t)
76 + nodes.ForEachPar(func(n *harness.Node) {
77 + n.UpdateConfig(func(cfg *config.Config) {
78 + cfg.Swarm.Transports.Multiplexers.Yamux = config.Disabled
79 + })
80 + })
81 + nodes.StartDaemons().Connect()
82 + runTests(nodes)
83 + })
84 +
85 + t.Run("tcp with NOISE", func(t *testing.T) {
86 + t.Parallel()
87 + nodes := tcpNodes(t)
88 + nodes.ForEachPar(func(n *harness.Node) {
89 + n.UpdateConfig(func(cfg *config.Config) {
90 + cfg.Swarm.Transports.Security.TLS = config.Disabled
91 + })
92 + })
93 + nodes.StartDaemons().Connect()
94 + runTests(nodes)
95 + })
96 +
97 + t.Run("QUIC", func(t *testing.T) {
98 + t.Parallel()
99 + nodes := harness.NewT(t).NewNodes(5).Init()
100 + nodes.ForEachPar(func(n *harness.Node) {
101 + n.UpdateConfig(func(cfg *config.Config) {
102 + cfg.Addresses.Swarm = []string{"/ip4/127.0.0.1/udp/0/quic-v1"}
103 + cfg.Swarm.Transports.Network.QUIC = config.True
104 + cfg.Swarm.Transports.Network.TCP = config.False
105 + })
106 + })
107 + disableRouting(nodes)
108 + nodes.StartDaemons().Connect()
109 + runTests(nodes)
110 + })
111 +
112 + t.Run("QUIC", func(t *testing.T) {
113 + t.Parallel()
114 + nodes := harness.NewT(t).NewNodes(5).Init()
115 + nodes.ForEachPar(func(n *harness.Node) {
116 + n.UpdateConfig(func(cfg *config.Config) {
117 + cfg.Addresses.Swarm = []string{"/ip4/127.0.0.1/udp/0/quic-v1/webtransport"}
118 + cfg.Swarm.Transports.Network.QUIC = config.True
119 + cfg.Swarm.Transports.Network.WebTransport = config.True
120 + })
121 + })
122 + disableRouting(nodes)
123 + nodes.StartDaemons().Connect()
124 + runTests(nodes)
125 + })
126 +
127 +}
test/ipfs-test-lib.sh
+6 -6
@@ -50,19 +50,19 @@ test_path_cmp() {
50
51 # Docker
52
53 -# This takes a Dockerfile, and a build context directory
53 +# This takes a Dockerfile, a tag name, and a build context directory
54 docker_build() {
55 - docker build --rm -f "$1" "$2" | ansi_strip
55 + docker build --rm --tag "$1" --file "$2" "$3" | ansi_strip
56 }
57
58 # This takes an image as argument and writes a docker ID on stdout
59 docker_run() {
60 - docker run -d "$1"
60 + docker run --detach "$1"
61 }
62
63 # This takes a docker ID and a command as arguments
64 docker_exec() {
65 - docker exec -t "$1" /bin/sh -c "$2"
65 + docker exec --tty "$1" /bin/sh -c "$2"
66 }
67
68 # This takes a docker ID as argument
@@ -72,12 +72,12 @@ docker_stop() {
72
73 # This takes a docker ID as argument
74 docker_rm() {
75 - docker rm -f -v "$1" > /dev/null
75 + docker rm --force --volumes "$1" > /dev/null
76 }
77
78 # This takes a docker image name as argument
79 docker_rmi() {
80 - docker rmi -f "$1" > /dev/null
80 + docker rmi --force "$1" > /dev/null
81 }
82
83 # Test whether all the expected lines are included in a file. The file
test/sharness/t0002-docker-image.sh renamed
+5 -11
@@ -27,18 +27,12 @@ TEST_TRASH_DIR=$(pwd)
27 TEST_SCRIPTS_DIR=$(dirname "$TEST_TRASH_DIR")
28 TEST_TESTS_DIR=$(dirname "$TEST_SCRIPTS_DIR")
29 APP_ROOT_DIR=$(dirname "$TEST_TESTS_DIR")
30 +IMAGE_TAG=kubo_test
31
32 test_expect_success "docker image build succeeds" '
32 - docker_build "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" | tee build-actual ||
33 + docker_build "$IMAGE_TAG" "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" ||
34 test_fsh echo "TEST_TESTS_DIR: $TEST_TESTS_DIR" ||
34 - test_fsh echo "APP_ROOT_DIR : $APP_ROOT_DIR" ||
35 - test_fsh cat build-actual
36 -'
37 -
38 -test_expect_success "docker image build output looks good" '
39 - SUCCESS_LINE=$(egrep "^Successfully built" build-actual) &&
40 - IMAGE_ID=$(expr "$SUCCESS_LINE" : "^Successfully built \(.*\)") ||
41 - test_fsh cat build-actual
35 + test_fsh echo "APP_ROOT_DIR : $APP_ROOT_DIR"
36 '
37
38 test_expect_success "write init scripts" '
@@ -52,7 +46,7 @@ test_expect_success "docker image runs" '
46 -p 127.0.0.1:5001:5001 -p 127.0.0.1:8080:8080 \
47 -v "$PWD/001.sh":/container-init.d/001.sh \
48 -v "$PWD/002.sh":/container-init.d/002.sh \
55 - "$IMAGE_ID")
49 + "$IMAGE_TAG")
50 '
51
52 test_expect_success "docker container gateway is up" '
@@ -100,5 +94,5 @@ test_expect_success "stop docker container" '
94 '
95
96 docker_rm "$DOC_ID"
103 -docker_rmi "$IMAGE_ID"
97 +docker_rmi "$IMAGE_TAG"
98 test_done
test/sharness/t0003-docker-migrate.sh renamed
+4 -5
@@ -24,10 +24,10 @@ TEST_TRASH_DIR=$(pwd)
24 TEST_SCRIPTS_DIR=$(dirname "$TEST_TRASH_DIR")
25 TEST_TESTS_DIR=$(dirname "$TEST_SCRIPTS_DIR")
26 APP_ROOT_DIR=$(dirname "$TEST_TESTS_DIR")
27 +IMAGE_TAG=kubo_migrate
28
29 test_expect_success "docker image build succeeds" '
29 - docker_build "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" >actual &&
30 - IMAGE_ID=$(tail -n1 actual | cut -d " " -f 3)
30 + docker_build "$IMAGE_TAG" "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR"
31 '
32
33 test_init_ipfs
@@ -53,7 +53,7 @@ test_expect_success "startup fake dists server" '
53 '
54
55 test_expect_success "docker image runs" '
56 - DOC_ID=$(docker run -d -v "$IPFS_PATH":/data/ipfs --net=host "$IMAGE_ID")
56 + DOC_ID=$(docker run -d -v "$IPFS_PATH":/data/ipfs --net=host "$IMAGE_TAG")
57 '
58
59 test_expect_success "docker container tries to pull migrations from netcat" '
@@ -78,6 +78,5 @@ test_expect_success "correct version was requested" '
78 '
79
80 docker_rm "$DOC_ID"
81 -docker_rmi "$IMAGE_ID"
81 +docker_rmi "$IMAGE_TAG"
82 test_done
83 -
test/sharness/t0125-twonode.sh deleted
-178
@@ -1,178 +0,0 @@
1 -#!/usr/bin/env bash
2 -#
3 -# Copyright (c) 2017 Jeromy Johnson
4 -# MIT Licensed; see the LICENSE file in this repository.
5 -#
6 -
7 -test_description="Test two ipfs nodes transferring a file"
8 -
9 -. lib/test-lib.sh
10 -
11 -check_file_fetch() {
12 - node=$1
13 - fhash=$2
14 - fname=$3
15 -
16 - test_expect_success "can fetch file" '
17 - ipfsi $node cat $fhash > fetch_out
18 - '
19 -
20 - test_expect_success "file looks good" '
21 - test_cmp $fname fetch_out
22 - '
23 -}
24 -
25 -check_dir_fetch() {
26 - node=$1
27 - ref=$2
28 -
29 - test_expect_success "node can fetch all refs for dir" '
30 - ipfsi $node refs -r $ref > /dev/null
31 - '
32 -}
33 -
34 -run_single_file_test() {
35 - test_expect_success "add a file on node1" '
36 - random 1000000 > filea &&
37 - FILEA_HASH=$(ipfsi 1 add -q filea)
38 - '
39 -
40 - check_file_fetch 0 $FILEA_HASH filea
41 -}
42 -
43 -run_random_dir_test() {
44 - test_expect_success "create a bunch of random files" '
45 - random-files -depth=3 -dirs=4 -files=5 -seed=5 foobar > /dev/null
46 - '
47 -
48 - test_expect_success "add those on node 0" '
49 - DIR_HASH=$(ipfsi 0 add -r -Q foobar)
50 - '
51 -
52 - check_dir_fetch 1 $DIR_HASH
53 -}
54 -
55 -flaky_advanced_test() {
56 - startup_cluster 2 "$@"
57 -
58 - test_expect_success "clean repo before test" '
59 - ipfsi 0 repo gc > /dev/null &&
60 - ipfsi 1 repo gc > /dev/null
61 - '
62 -
63 - run_single_file_test
64 -
65 - run_random_dir_test
66 -
67 - test_expect_success "gather bitswap stats" '
68 - ipfsi 0 bitswap stat -v > stat0 &&
69 - ipfsi 1 bitswap stat -v > stat1
70 - '
71 -
72 - test_expect_success "shut down nodes" '
73 - iptb stop && iptb_wait_stop
74 - '
75 -
76 - # NOTE: data transferred stats checks are flaky
77 - # trying to debug them by printing out the stats hides the flakiness
78 - # my theory is that the extra time cat calls take to print out the stats
79 - # allow for proper cleanup to happen
80 - go-sleep 1s
81 -}
82 -
83 -run_advanced_test() {
84 - # TODO: investigate why flaky_advanced_test is flaky
85 - # Context: https://github.com/ipfs/kubo/pull/9486
86 - # sometimes, bitswap status returns unexpected block transfers
87 - # and everyone has been re-running circleci until is passes for at least a year.
88 - # this re-runs test until it passes or a timeout hits
89 -
90 - BLOCKS_0=126
91 - BLOCKS_1=5
92 - DATA_0=228113
93 - DATA_1=1000256
94 - for i in $(test_seq 1 600); do
95 - flaky_advanced_test
96 - (grep -q "$DATA_0" stat0 && grep -q "$DATA_1" stat1) && break
97 - go-sleep 100ms
98 - done
99 -
100 - test_expect_success "node0 data transferred looks correct" '
101 - test_should_contain "blocks sent: $BLOCKS_0" stat0 &&
102 - test_should_contain "blocks received: $BLOCKS_1" stat0 &&
103 - test_should_contain "data sent: $DATA_0" stat0 &&
104 - test_should_contain "data received: $DATA_1" stat0
105 - '
106 -
107 - test_expect_success "node1 data transferred looks correct" '
108 - test_should_contain "blocks received: $BLOCKS_0" stat1 &&
109 - test_should_contain "blocks sent: $BLOCKS_1" stat1 &&
110 - test_should_contain "data received: $DATA_0" stat1 &&
111 - test_should_contain "data sent: $DATA_1" stat1
112 - '
113 -
114 -}
115 -
116 -test_expect_success "set up tcp testbed" '
117 - iptb testbed create -type localipfs -count 2 -force -init
118 -'
119 -
120 -test_expect_success "disable routing, use direct peering" '
121 - iptb run -- ipfs config Routing.Type none &&
122 - iptb run -- ipfs config --json Bootstrap "[]"
123 -'
124 -
125 -# Test TCP transport
126 -echo "Testing TCP"
127 -addrs='"[\"/ip4/127.0.0.1/tcp/0\"]"'
128 -test_expect_success "use TCP only" '
129 - iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
130 - iptb run -- ipfs config --json Swarm.Transports.Network.QUIC false &&
131 - iptb run -- ipfs config --json Swarm.Transports.Network.Relay false &&
132 - iptb run -- ipfs config --json Swarm.Transports.Network.WebTransport false &&
133 - iptb run -- ipfs config --json Swarm.Transports.Network.Websocket false
134 -'
135 -run_advanced_test
136 -
137 -# test multiplex muxer
138 -echo "Running TCP tests with mplex"
139 -test_expect_success "disable yamux" '
140 - iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux false
141 -'
142 -run_advanced_test
143 -
144 -test_expect_success "re-enable yamux" '
145 - iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux null
146 -'
147 -# test Noise
148 -echo "Running TCP tests with NOISE"
149 -test_expect_success "use noise only" '
150 - iptb run -- ipfs config --json Swarm.Transports.Security.TLS false
151 -'
152 -run_advanced_test
153 -
154 -test_expect_success "re-enable TLS" '
155 - iptb run -- ipfs config --json Swarm.Transports.Security.TLS null
156 -'
157 -
158 -# test QUIC
159 -echo "Running advanced tests over QUIC"
160 -addrs='"[\"/ip4/127.0.0.1/udp/0/quic-v1\"]"'
161 -test_expect_success "use QUIC only" '
162 - iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
163 - iptb run -- ipfs config --json Swarm.Transports.Network.QUIC true &&
164 - iptb run -- ipfs config --json Swarm.Transports.Network.TCP false
165 -'
166 -run_advanced_test
167 -
168 -# test WebTransport
169 -echo "Running advanced tests over WebTransport"
170 -addrs='"[\"/ip4/127.0.0.1/udp/0/quic-v1/webtransport\"]"'
171 -test_expect_success "use WebTransport only" '
172 - iptb run -- ipfs config --json Addresses.Swarm '"${addrs}"' &&
173 - iptb run -- ipfs config --json Swarm.Transports.Network.QUIC true &&
174 - iptb run -- ipfs config --json Swarm.Transports.Network.WebTransport true
175 -'
176 -run_advanced_test
177 -
178 -test_done
test/sharness/t0130-multinode.sh deleted
-115
@@ -1,115 +0,0 @@
1 -#!/usr/bin/env bash
2 -#
3 -# Copyright (c) 2015 Jeromy Johnson
4 -# MIT Licensed; see the LICENSE file in this repository.
5 -#
6 -
7 -test_description="Test multiple ipfs nodes"
8 -
9 -. lib/test-lib.sh
10 -
11 -check_file_fetch() {
12 - node=$1
13 - fhash=$2
14 - fname=$3
15 -
16 - test_expect_success "can fetch file" '
17 - ipfsi $node cat $fhash > fetch_out
18 - '
19 -
20 - test_expect_success "file looks good" '
21 - test_cmp $fname fetch_out
22 - '
23 -}
24 -
25 -check_dir_fetch() {
26 - node=$1
27 - ref=$2
28 -
29 - test_expect_success "node can fetch all refs for dir" '
30 - ipfsi $node refs -r $ref > /dev/null
31 - '
32 -}
33 -
34 -run_single_file_test() {
35 - test_expect_success "add a file on node1" '
36 - random 1000000 > filea &&
37 - FILEA_HASH=$(ipfsi 1 add -q filea)
38 - '
39 -
40 - check_file_fetch 4 $FILEA_HASH filea
41 - check_file_fetch 3 $FILEA_HASH filea
42 - check_file_fetch 2 $FILEA_HASH filea
43 - check_file_fetch 1 $FILEA_HASH filea
44 - check_file_fetch 0 $FILEA_HASH filea
45 -}
46 -
47 -run_random_dir_test() {
48 - test_expect_success "create a bunch of random files" '
49 - random-files -depth=4 -dirs=3 -files=6 foobar > /dev/null
50 - '
51 -
52 - test_expect_success "add those on node 2" '
53 - DIR_HASH=$(ipfsi 2 add -r -Q foobar)
54 - '
55 -
56 - check_dir_fetch 0 $DIR_HASH
57 - check_dir_fetch 1 $DIR_HASH
58 - check_dir_fetch 2 $DIR_HASH
59 - check_dir_fetch 3 $DIR_HASH
60 - check_dir_fetch 4 $DIR_HASH
61 -}
62 -
63 -
64 -run_basic_test() {
65 - startup_cluster 5
66 -
67 - run_single_file_test
68 -
69 - test_expect_success "shut down nodes" '
70 - iptb stop && iptb_wait_stop
71 - '
72 -}
73 -
74 -run_advanced_test() {
75 - startup_cluster 5 "$@"
76 -
77 - run_single_file_test
78 -
79 - run_random_dir_test
80 -
81 - test_expect_success "shut down nodes" '
82 - iptb stop && iptb_wait_stop ||
83 - test_fsh tail -n +1 .iptb/testbeds/default/*/daemon.std*
84 - '
85 -}
86 -
87 -test_expect_success "set up /tcp testbed" '
88 - iptb testbed create -type localipfs -count 5 -force -init
89 -'
90 -
91 -# test default configuration
92 -run_advanced_test
93 -
94 -# test multiplex muxer
95 -test_expect_success "disable yamux" '
96 - iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux false
97 -'
98 -run_advanced_test
99 -
100 -test_expect_success "set up /ws testbed" '
101 - iptb testbed create -type localipfs -count 5 -attr listentype,ws -force -init
102 -'
103 -
104 -# test default configuration
105 -run_advanced_test
106 -
107 -# test multiplex muxer
108 -test_expect_success "disable yamux" '
109 - iptb run -- ipfs config --json Swarm.Transports.Multiplexers.Yamux false
110 -'
111 -
112 -run_advanced_test
113 -
114 -
115 -test_done