Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ jobs:
run: go build -v ./...

- name: Test
run: go test -timeout 100s ./...
run: go test -timeout 500s ./...
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
run: go build -v ./...

- name: Test
run: go test -timeout 100s -v ./...
run: go test -timeout 500s -v ./...

- name: Create a release
id: create_release
Expand Down
4 changes: 2 additions & 2 deletions pulsar/connector/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,12 @@ func NewClient(options ...func(*PulsarClientOptions)) (Client, error) {
if cfg == nil {
return nil, fmt.Errorf("pulsar config is nil. use WithConfig to set it")
}
retryAttempts := 5
retryAttempts := 30
if clientOptions.retryAttempts != nil {
retryAttempts = *clientOptions.retryAttempts
}

retryMaxDelay := time.Second
retryMaxDelay := 2 * time.Second
if clientOptions.retryMaxDelay != nil {
retryMaxDelay = *clientOptions.retryMaxDelay
}
Expand Down
13 changes: 4 additions & 9 deletions pulsar/connector/scripts/pulsar.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
#!/bin/bash

cr='docker'
PODMAN_EXISTS=$(which podman)
RET_VAL=$?

if [ $RET_VAL -eq '0' ]; then
echo "podman exists."
if command -v docker >/dev/null 2>&1; then
cr='docker'
elif command -v podman >/dev/null 2>&1; then
cr='podman'
else
echo "podman does not exist. using docker"
fi

app_port=${2:-6650} # Use this as default port if no argument is provided
Expand All @@ -20,6 +15,6 @@ app_port=%d
admin_port=%d
container_name=%s

echo "Starting pulsar on port $app_port and admin port $admin_port"
echo "Starting pulsar using $cr on port $app_port and admin port $admin_port"

$cr run --name=$container_name -d -p $app_port:6650 -p $admin_port:8080 docker.io/apachepulsar/pulsar:2.11.0 bin/pulsar standalone
9 changes: 3 additions & 6 deletions pulsar/connector/scripts/pulsar_stop.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
#!/bin/bash

cr='docker'
PODMAN_EXISTS=$(which podman)
RET_VAL=$?

if [ $RET_VAL -eq '0' ]; then
echo "podman exists."
if command -v docker >/dev/null 2>&1; then
cr='docker'
elif command -v podman >/dev/null 2>&1; then
cr='podman'
fi
container_name=%s
Expand Down
29 changes: 22 additions & 7 deletions pulsar/connector/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -286,11 +286,12 @@

func (suite *MainTestSuite) startPulsar() {
suite.T().Log("stopping existing pulsar container")
exec.Command("/bin/sh", "-c", pulsarStopCommand).Run()
exec.Command("/bin/sh", "-c", fmt.Sprintf(pulsarStopCommand, "basic-suite")).Run()

Check failure on line 289 in pulsar/connector/suite_test.go

View workflow job for this annotation

GitHub Actions / test / Basic-Test

Error return value of `(*os/exec.Cmd).Run` is not checked (errcheck)
time.Sleep(2 * time.Second)

suite.T().Log("starting pulsar")
out, err := exec.Command("/bin/sh", "-c", fmt.Sprintf(pulsarDockerCommand, pulsarClientPort, pulsarAdminPort, "basic-suite")).CombinedOutput()
suite.T().Logf("start script output:\n%s", string(out))
if err != nil {
suite.FailNow("failed to start pulsar", err.Error(), string(out))
}
Expand All @@ -299,17 +300,31 @@
suite.FailNow("failed to create request", err.Error())
}
suite.T().Log("waiting for pulsar to start")
client := http.Client{}
for i := 0; i < 40; i++ {
client := http.Client{Timeout: 5 * time.Second}
var lastErr error
for i := 0; i < 120; i++ {
resp, err := client.Do(req)
if err == nil && resp.StatusCode == http.StatusOK {
suite.T().Log("pulsar started")
if err == nil {
if resp.StatusCode == http.StatusOK {
suite.T().Log("pulsar started")
resp.Body.Close()
return
}
lastErr = fmt.Errorf("unexpected status code: %d", resp.StatusCode)
resp.Body.Close()
return
} else {
lastErr = err
}
if i%10 == 0 {
suite.T().Logf("waiting for pulsar... attempt %d/120, last error: %v", i, lastErr)
}
time.Sleep(2 * time.Second)
}
suite.FailNow("failed to start pulsar")
dockerPs, _ := exec.Command("/bin/sh", "-c", "docker ps -a 2>&1").CombinedOutput()
dockerLogs, _ := exec.Command("/bin/sh", "-c", "docker logs --tail 50 basic-suite 2>&1").CombinedOutput()
podmanPs, _ := exec.Command("/bin/sh", "-c", "podman ps -a 2>&1").CombinedOutput()
podmanLogs, _ := exec.Command("/bin/sh", "-c", "podman logs --tail 50 basic-suite 2>&1").CombinedOutput()
suite.FailNow("failed to start pulsar", fmt.Sprintf("last error: %v\ndocker ps:\n%s\ndocker logs:\n%s\npodman ps:\n%s\npodman logs:\n%s", lastErr, string(dockerPs), string(dockerLogs), string(podmanPs), string(podmanLogs)))
}

func loadJson[T any](jsonBytes []byte) T {
Expand Down
13 changes: 4 additions & 9 deletions pulsar/test/scripts/pulsar.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
#!/bin/bash

cr='docker'
PODMAN_EXISTS=$(which podman)
RET_VAL=$?

if [ $RET_VAL -eq '0' ]; then
echo "podman exists."
if command -v docker >/dev/null 2>&1; then
cr='docker'
elif command -v podman >/dev/null 2>&1; then
cr='podman'
else
echo "podman does not exist. using docker"
fi

app_port=${2:-6650} # Use this as default port if no argument is provided
Expand All @@ -20,6 +15,6 @@ app_port=%d
admin_port=%d
container_name=%s

echo "Starting pulsar on port $app_port and admin port $admin_port"
echo "Starting pulsar using $cr on port $app_port and admin port $admin_port"

$cr run --name=$container_name -d -p $app_port:6650 -p $admin_port:8080 docker.io/apachepulsar/pulsar:2.11.0 bin/pulsar standalone
9 changes: 3 additions & 6 deletions pulsar/test/scripts/pulsar_stop.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
#!/bin/bash

cr='docker'
PODMAN_EXISTS=$(which podman)
RET_VAL=$?

if [ $RET_VAL -eq '0' ]; then
echo "podman exists."
if command -v docker >/dev/null 2>&1; then
cr='docker'
elif command -v podman >/dev/null 2>&1; then
cr='podman'
fi
container_name=%s
Expand Down
7 changes: 4 additions & 3 deletions pulsar/test/suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@

func (suite *PulsarTestSuite) startPulsar(contName string) {
suite.T().Log("stopping existing pulsar container")
exec.Command("/bin/sh", "-c", pulsarStopCommand).Run()
exec.Command("/bin/sh", "-c", fmt.Sprintf(pulsarStopCommand, contName)).Run()

Check failure on line 131 in pulsar/test/suite.go

View workflow job for this annotation

GitHub Actions / test / Basic-Test

Error return value of `(*os/exec.Cmd).Run` is not checked (errcheck)
suite.T().Log("starting pulsar")

pulsarAppPort, err := findFreePort(suite.AppPortStart, suite.AppPortStart+100)
Expand All @@ -153,19 +153,20 @@
suite.FailNow("failed to start pulsar", err.Error(), string(out))
}
suite.T().Log("waiting for pulsar to start")
for i := 0; i < 30; i++ {
for i := 0; i < 120; i++ {
isAlive := suite.checkPulsarIsAlive()
if isAlive {
return
}
time.Sleep(2 * time.Second)
}
logs, _ := exec.Command("/bin/sh", "-c", fmt.Sprintf("docker logs --tail 50 %s || podman logs --tail 50 %s", contName, contName)).CombinedOutput()
formmatedScript := fmt.Sprintf(pulsarStopCommand, contName)
outbytes, err := exec.Command("/bin/sh", "-c", formmatedScript).CombinedOutput()
if err != nil {
fmt.Println(string(outbytes), err.Error())
}
killPortProcess(suite.AppPortStart)
killPortProcess(suite.AdminPortStart)
suite.FailNow("failed to start pulsar")
suite.FailNow("failed to start pulsar", fmt.Sprintf("container logs:\n%s", string(logs)))
}
Loading