aboutsummaryrefslogtreecommitdiff
path: root/seaweedfs-rdma-sidecar/tests/docker-test-helper.sh
blob: edb95541e6f693b74655300151877eabc51a8f82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/bash

# Docker Test Helper - Simplified commands for running integration tests

set -e

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

print_usage() {
    echo -e "${BLUE}SeaweedFS RDMA Docker Integration Test Helper${NC}"
    echo ""
    echo "Usage: $0 [command]"
    echo ""
    echo "Commands:"
    echo "  start     - Start all services"
    echo "  test      - Run integration tests"
    echo "  stop      - Stop all services"
    echo "  clean     - Stop services and clean up volumes"
    echo "  logs      - Show logs from all services"
    echo "  status    - Show status of all services"
    echo "  shell     - Open shell in test client container"
    echo ""
    echo "Examples:"
    echo "  $0 start          # Start all services"
    echo "  $0 test           # Run full integration test suite"
    echo "  $0 logs rdma-engine  # Show logs from RDMA engine"
    echo "  $0 shell          # Interactive testing shell"
}

start_services() {
    echo -e "${GREEN}๐Ÿš€ Starting SeaweedFS RDMA integration services...${NC}"
    docker-compose up -d seaweedfs-master seaweedfs-volume rdma-engine rdma-sidecar
    
    echo -e "${YELLOW}โณ Waiting for services to be ready...${NC}"
    sleep 10
    
    echo -e "${GREEN}โœ… Services started. Checking health...${NC}"
    docker-compose ps
}

run_tests() {
    echo -e "${GREEN}๐Ÿงช Running integration tests...${NC}"
    
    # Make sure services are running
    docker-compose up -d seaweedfs-master seaweedfs-volume rdma-engine rdma-sidecar
    
    # Wait for services to be ready
    echo -e "${YELLOW}โณ Waiting for services to be ready...${NC}"
    sleep 15
    
    # Run the integration tests
    docker-compose run --rm integration-tests
}

stop_services() {
    echo -e "${YELLOW}๐Ÿ›‘ Stopping services...${NC}"
    docker-compose down
    echo -e "${GREEN}โœ… Services stopped${NC}"
}

clean_all() {
    echo -e "${YELLOW}๐Ÿงน Cleaning up services and volumes...${NC}"
    docker-compose down -v --remove-orphans
    echo -e "${GREEN}โœ… Cleanup complete${NC}"
}

show_logs() {
    local service=${1:-}
    if [ -n "$service" ]; then
        echo -e "${BLUE}๐Ÿ“‹ Showing logs for $service...${NC}"
        docker-compose logs -f "$service"
    else
        echo -e "${BLUE}๐Ÿ“‹ Showing logs for all services...${NC}"
        docker-compose logs -f
    fi
}

show_status() {
    echo -e "${BLUE}๐Ÿ“Š Service Status:${NC}"
    docker-compose ps
    
    echo -e "\n${BLUE}๐Ÿ“ก Health Checks:${NC}"
    
    # Check SeaweedFS Master
    if curl -s http://localhost:9333/cluster/status >/dev/null 2>&1; then
        echo -e "  ${GREEN}โœ… SeaweedFS Master: Healthy${NC}"
    else
        echo -e "  ${RED}โŒ SeaweedFS Master: Unhealthy${NC}"
    fi
    
    # Check SeaweedFS Volume
    if curl -s http://localhost:8080/status >/dev/null 2>&1; then
        echo -e "  ${GREEN}โœ… SeaweedFS Volume: Healthy${NC}"
    else
        echo -e "  ${RED}โŒ SeaweedFS Volume: Unhealthy${NC}"
    fi
    
    # Check RDMA Sidecar
    if curl -s http://localhost:8081/health >/dev/null 2>&1; then
        echo -e "  ${GREEN}โœ… RDMA Sidecar: Healthy${NC}"
    else
        echo -e "  ${RED}โŒ RDMA Sidecar: Unhealthy${NC}"
    fi
}

open_shell() {
    echo -e "${GREEN}๐Ÿš Opening interactive shell in test client...${NC}"
    echo -e "${YELLOW}Use './test-rdma --help' for RDMA testing commands${NC}"
    echo -e "${YELLOW}Use 'curl http://rdma-sidecar:8081/health' to test sidecar${NC}"
    
    docker-compose run --rm test-client /bin/bash
}

# Main command handling
case "${1:-}" in
    start)
        start_services
        ;;
    test)
        run_tests
        ;;
    stop)
        stop_services
        ;;
    clean)
        clean_all
        ;;
    logs)
        show_logs "${2:-}"
        ;;
    status)
        show_status
        ;;
    shell)
        open_shell
        ;;
    -h|--help|help)
        print_usage
        ;;
    "")
        print_usage
        exit 1
        ;;
    *)
        echo -e "${RED}โŒ Unknown command: $1${NC}"
        print_usage
        exit 1
        ;;
esac