summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/tests/vectorset/vectorset.tcl
blob: 1a1059b9284145d4fc841e460a0914ec835af324 (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
proc check_python_environment {} {
    set ret [catch {exec sh -c "which python3 || which python" 2>@1} python_cmd]
    if {$ret != 0} {
        return ""
    }

    # Check if redis-py is installed
    # Use a more robust way to check redis module
    set ret [catch {exec $python_cmd -c "import redis" 2>@1} e]
    if {$ret != 0} {
        return ""
    }

    return $python_cmd
}

start_server {} {
    set slave_port [srv 0 port]

    start_server {} {
        set master_port [srv 0 port]

        test {Vector set Python test execution} {
            set python_cmd [check_python_environment]
            if {$python_cmd eq ""} {
                puts "Python or redis-py module not found, skipping vectorset tests"
            } else {
                # Run the Python script with real-time output
                puts "Running vectorset tests ..."
                puts "Vectorset test output:"

                set pipe [open "|$python_cmd modules/vector-sets/test.py --primary-port $master_port --replica-port $slave_port 2>@1" r]
                # Read output line by line in real-time
                while {[gets $pipe line] >= 0} {
                    puts $line
                }

                # Close pipe and check for errors
                set result [catch {close $pipe} close_error]
                if {$result != 0} {
                    fail "Vector set Python test failed: $close_error"
                }
            }
        }
    }
}