Skip to content

Commit

Permalink
nsqd: move cluster test/don't rely on external scaffold
Browse files Browse the repository at this point in the history
  • Loading branch information
mreiferson committed Jul 18, 2015
1 parent 06e054c commit 5adf12b
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 141 deletions.
93 changes: 93 additions & 0 deletions nsqd/nsqd_test.go
Expand Up @@ -14,6 +14,7 @@ import (
"time"

"github.com/bitly/go-simplejson"
"github.com/bitly/nsq/internal/http_api"
"github.com/bitly/nsq/nsqlookupd"
)

Expand Down Expand Up @@ -331,3 +332,95 @@ func TestReconfigure(t *testing.T) {
equal(t, len(lookupPeers), 2)
equal(t, lookupPeers, newOpts.NSQLookupdTCPAddresses)
}

func TestCluster(t *testing.T) {
lopts := nsqlookupd.NewOptions()
lopts.Logger = newTestLogger(t)
lopts.BroadcastAddress = "127.0.0.1"
_, _, lookupd := mustStartNSQLookupd(lopts)

opts := NewOptions()
opts.Logger = newTestLogger(t)
opts.NSQLookupdTCPAddresses = []string{lookupd.RealTCPAddr().String()}
opts.BroadcastAddress = "127.0.0.1"
_, _, nsqd := mustStartNSQD(opts)
defer os.RemoveAll(opts.DataPath)
defer nsqd.Exit()

topicName := "cluster_test" + strconv.Itoa(int(time.Now().Unix()))

hostname, err := os.Hostname()
equal(t, err, nil)

url := fmt.Sprintf("http://%s/topic/create?topic=%s", nsqd.RealHTTPAddr(), topicName)
_, err = http_api.NegotiateV1("POST", url, nil)
equal(t, err, nil)

url = fmt.Sprintf("http://%s/channel/create?topic=%s&channel=ch", nsqd.RealHTTPAddr(), topicName)
_, err = http_api.NegotiateV1("POST", url, nil)
equal(t, err, nil)

// allow some time for nsqd to push info to nsqlookupd
time.Sleep(350 * time.Millisecond)

data, err := http_api.NegotiateV1("GET", fmt.Sprintf("http://%s/debug", lookupd.RealHTTPAddr()), nil)
equal(t, err, nil)

topicData := data.Get("topic:" + topicName + ":")
producers, _ := topicData.Array()
equal(t, len(producers), 1)

producer := topicData.GetIndex(0)
equal(t, producer.Get("hostname").MustString(), hostname)
equal(t, producer.Get("broadcast_address").MustString(), "127.0.0.1")
equal(t, producer.Get("tcp_port").MustInt(), nsqd.RealTCPAddr().Port)
equal(t, producer.Get("tombstoned").MustBool(), false)

channelData := data.Get("channel:" + topicName + ":ch")
producers, _ = channelData.Array()
equal(t, len(producers), 1)

producer = topicData.GetIndex(0)
equal(t, producer.Get("hostname").MustString(), hostname)
equal(t, producer.Get("broadcast_address").MustString(), "127.0.0.1")
equal(t, producer.Get("tcp_port").MustInt(), nsqd.RealTCPAddr().Port)
equal(t, producer.Get("tombstoned").MustBool(), false)

data, err = http_api.NegotiateV1("GET", fmt.Sprintf("http://%s/lookup?topic=%s", lookupd.RealHTTPAddr(), topicName), nil)
equal(t, err, nil)

producers, _ = data.Get("producers").Array()
equal(t, len(producers), 1)

producer = data.Get("producers").GetIndex(0)
equal(t, producer.Get("hostname").MustString(), hostname)
equal(t, producer.Get("broadcast_address").MustString(), "127.0.0.1")
equal(t, producer.Get("tcp_port").MustInt(), nsqd.RealTCPAddr().Port)

channels, _ := data.Get("channels").Array()
equal(t, len(channels), 1)

channel := channels[0].(string)
equal(t, channel, "ch")

data, err = http_api.NegotiateV1("POST", fmt.Sprintf("http://%s/topic/delete?topic=%s", nsqd.RealHTTPAddr(), topicName), nil)
equal(t, err, nil)

// allow some time for nsqd to push info to nsqlookupd
time.Sleep(350 * time.Millisecond)

data, err = http_api.NegotiateV1("GET", fmt.Sprintf("http://%s/lookup?topic=%s", lookupd.RealHTTPAddr(), topicName), nil)
equal(t, err, nil)

producers, _ = data.Get("producers").Array()
equal(t, len(producers), 0)

data, err = http_api.NegotiateV1("GET", fmt.Sprintf("http://%s/debug", lookupd.RealHTTPAddr()), nil)
equal(t, err, nil)

producers, _ = data.Get("topic:" + topicName + ":").Array()
equal(t, len(producers), 0)

producers, _ = data.Get("channel:" + topicName + ":ch").Array()
equal(t, len(producers), 0)
}
102 changes: 0 additions & 102 deletions nsqd/test/cluster_test.go

This file was deleted.

7 changes: 0 additions & 7 deletions nsqd/test/empty.go

This file was deleted.

36 changes: 4 additions & 32 deletions test.sh
@@ -1,43 +1,15 @@
#!/bin/bash
set -e

# build and run nsqlookupd
LOOKUP_LOGFILE=$(mktemp -t nsqlookupd.XXXXXXX)
cmd="apps/nsqlookupd/nsqlookupd --broadcast-address=127.0.0.1"
echo "building and starting $cmd"
echo " logging to $LOOKUP_LOGFILE"
go build -o apps/nsqlookupd/nsqlookupd ./apps/nsqlookupd/
$cmd >$LOOKUP_LOGFILE 2>&1 &
LOOKUPD_PID=$!

# build and run nsqd configured to use our lookupd above
NSQD_LOGFILE=$(mktemp -t nsqd.XXXXXXX)
cmd="apps/nsqd/nsqd --data-path=/tmp --broadcast-address=127.0.0.1 --lookupd-tcp-address=127.0.0.1:4160 --tls-cert=nsqd/test/certs/cert.pem --tls-key=nsqd/test/certs/key.pem --tls-min-version=tls1.0"
echo "building and starting $cmd"
echo " logging to $NSQD_LOGFILE"
go build -o apps/nsqd/nsqd ./apps/nsqd
$cmd >$NSQD_LOGFILE 2>&1 &
NSQD_PID=$!

sleep 0.3

cleanup() {
echo "killing nsqd PID $NSQD_PID"
kill -s TERM $NSQD_PID || cat $NSQD_LOGFILE
echo "killing nsqlookupd PID $LOOKUPD_PID"
kill -s TERM $LOOKUPD_PID || cat $LOOKUP_LOGFILE
}
trap cleanup INT TERM EXIT

go test -timeout 60s ./...
GOMAXPROCS=4 go test -timeout 60s -race ./...
GOMAXPROCS=1 go test -timeout 90s ./...
GOMAXPROCS=4 go test -timeout 90s -race ./...

# no tests, but a build is something
for dir in $(find apps bench -maxdepth 1 -type d) nsqadmin; do
if grep -q '^package main$' $dir/*.go ; then
if grep -q '^package main$' $dir/*.go 2>/dev/null; then
echo "building $dir"
go build -o $dir/$(basename $dir) ./$dir
else
echo "WARNING: skipping go build in $dir"
echo "(skipped $dir)"
fi
done

0 comments on commit 5adf12b

Please sign in to comment.