t0060-daemon.sh 4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
#!/bin/sh
#
# Copyright (c) 2014 Juan Batiz-Benet
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test daemon command"

. lib/test-lib.sh

11 12 13 14 15 16
gwyport=8082
apiport=5002
swarmport=4003

API_ADDR="/ip4/0.0.0.0/tcp/$apiport"
GATEWAY_ADDR="/ip4/0.0.0.0/tcp/$gwyport"
rht's avatar
rht committed
17

18 19
# TODO: randomize ports here once we add --config to ipfs daemon

20
# this needs to be in a different test than "ipfs daemon" below
21
test_expect_success "setup IPFS_PATH" '
Christian Couder's avatar
Christian Couder committed
22 23
  IPFS_PATH="$(pwd)/.ipfs" &&
  export IPFS_PATH
24 25
'

26 27 28 29 30 31 32
test_expect_success 'ipfs init & config' '
  ipfs init &&
  ipfs config Addresses.Gateway $GATEWAY_ADDR &&
  ipfs config Addresses.API $API_ADDR &&
  ipfs config --json=true Addresses.Swarm "[\"/ip4/0.0.0.0/tcp/4003\"]"
'

Stephen Whitmore's avatar
Stephen Whitmore committed
33
test_launch_ipfs_daemon
34

Stephen Whitmore's avatar
Stephen Whitmore committed
35
# this errors if we didn't --init $IPFS_PATH correctly
36
test_expect_success "'ipfs config Identity.PeerID' works" '
37
  PEERID=$(ipfs config Identity.PeerID)
38 39
'

40 41 42 43
test_expect_success "'ipfs swarm addrs local' works" '
  ipfs swarm addrs local >local_addrs
'

44
test_expect_success "ipfs peer id looks good" '
45
  test_check_peerid "$PEERID"
46 47
'

rht's avatar
rht committed
48 49 50 51 52 53 54 55 56 57
# this is for checking SetAllowedOrigins race condition for the api and gateway
# See https://github.com/ipfs/go-ipfs/pull/1966
test_expect_success "ipfs API works with the correct allowed origin port" '
  curl -s -X GET -H "Origin:http://localhost:$apiport" -I "http://localhost:$apiport/api/v0/version"
'

test_expect_success "ipfs gateway works with the correct allowed origin port" '
  curl -s -X GET -H "Origin:http://localhost:$gwyport" -I "http://localhost:$gwyport/api/v0/version"
'

58
test_expect_success "ipfs daemon output looks good" '
Juan Batiz-Benet's avatar
Juan Batiz-Benet committed
59
  STARTFILE="ipfs cat /ipfs/$HASH_WELCOME_DOCS/readme" &&
60
  echo "Initializing daemon..." >expected_daemon &&
61
  sed "s/^/Swarm listening on /" local_addrs >>expected_daemon &&
62 63
  echo "API server listening on '$API_ADDR'" >>expected_daemon &&
  echo "Gateway (readonly) server listening on '$GATEWAY_ADDR'" >>expected_daemon &&
rht's avatar
rht committed
64
  echo "Daemon is ready" >>expected_daemon &&
65
  test_cmp expected_daemon actual_daemon
66 67
'

68 69 70
test_expect_success ".ipfs/ has been created" '
  test -d ".ipfs" &&
  test -f ".ipfs/config" &&
rht's avatar
rht committed
71 72 73
  test -d ".ipfs/datastore" &&
  test -d ".ipfs/blocks" ||
  test_fsh ls -al .ipfs
74 75
'

76 77 78 79 80 81 82
# begin same as in t0010

test_expect_success "ipfs version succeeds" '
	ipfs version >version.txt
'

test_expect_success "ipfs version output looks good" '
83
	egrep "^ipfs version [0-9]+\.[0-9]+\.[0-9]" version.txt >/dev/null ||
84 85 86 87 88 89 90 91
	test_fsh cat version.txt
'

test_expect_success "ipfs help succeeds" '
	ipfs help >help.txt
'

test_expect_success "ipfs help output looks good" '
92 93
	egrep -i "^Usage:" help.txt >/dev/null &&
	egrep "ipfs .* <command>" help.txt >/dev/null ||
94 95 96
	test_fsh cat help.txt
'

Christian Couder's avatar
Christian Couder committed
97 98 99 100
# netcat (nc) is needed for the following test
test_expect_success "nc is available" '
	type nc >/dev/null
'
101

Christian Couder's avatar
Christian Couder committed
102
# check transport is encrypted
rht's avatar
rht committed
103
test_expect_success "transport should be encrypted" '
104
  nc -w 5 localhost '$swarmport' >swarmnc &&
105
  grep -q "AES-256,AES-128" swarmnc &&
Jeromy's avatar
Jeromy committed
106
  test_must_fail grep -q "/multistream/1.0.0" swarmnc ||
107 108 109
	test_fsh cat swarmnc
'

110
test_expect_success "output from streaming commands works" '
111
	test_expect_code 28 curl -m 2 http://localhost:'$apiport'/api/v0/stats/bw\?poll=true > statsout
112 113 114 115 116 117 118 119 120
'

test_expect_success "output looks good" '
	grep TotalIn statsout > /dev/null &&
	grep TotalOut statsout > /dev/null &&
	grep RateIn statsout > /dev/null &&
	grep RateOut statsout >/dev/null
'

121 122
# end same as in t0010

123 124 125 126 127 128 129 130
test_expect_success "daemon is still running" '
  kill -0 $IPFS_PID
'

test_expect_success "'ipfs daemon' can be killed" '
  test_kill_repeat_10_sec $IPFS_PID
'

131 132
test_expect_success "'ipfs daemon' should be able to run with a pipe attached to stdin (issue #861)" '
  yes | ipfs daemon --init >stdin_daemon_out 2>stdin_daemon_err &
133
  pollEndpoint -host='$API_ADDR' -ep=/version -v -tout=1s -tries=10 >stdin_poll_apiout 2>stdin_poll_apierr &&
134
  test_kill_repeat_10_sec $! ||
135
  test_fsh cat stdin_daemon_out || test_fsh cat stdin_daemon_err || test_fsh cat stdin_poll_apiout || test_fsh cat stdin_poll_apierr
136 137
'

138
test_done