116 lines
3.5 KiB
Go
Raw Normal View History

2023-02-03 12:47:10 +01:00
package codex
import (
"bytes"
"context"
"fmt"
"log"
"net/http"
"testing"
"time"
"github.com/guseggert/clustertest/cluster"
"github.com/guseggert/clustertest/cluster/basic"
"github.com/guseggert/clustertest/cluster/docker"
"golang.org/x/sync/errgroup"
)
func TestHello(t *testing.T) {
run := func(t *testing.T, name string, impl cluster.Cluster) {
t.Run(name, func(t *testing.T) {
t.Parallel()
// Create the cluster.
c := basic.New(impl)
t.Cleanup(c.MustCleanup)
t.Logf("Launching %s nodes", name)
2023-02-09 15:36:41 +01:00
nodes := c.MustNewNodes(2)
2023-02-03 12:47:10 +01:00
group, groupCtx := errgroup.WithContext(context.Background())
2023-02-09 15:36:41 +01:00
// addrs := "/ip4/0.0.0.0/tcp/8090"
2023-02-03 12:47:10 +01:00
for i, node := range nodes {
node := node.Context(groupCtx)
if i == 0 {
2023-02-08 14:19:47 +01:00
group.Go(func() error {
// host node
stdout := &bytes.Buffer{}
stderr := &bytes.Buffer{}
2023-02-09 16:34:19 +01:00
// when running api on 8080, the host node will not be able to run due to nodeagent
2023-02-08 14:19:47 +01:00
_, err := node.StartProc(cluster.StartProcRequest{
Command: "./build/codex",
2023-02-09 16:34:19 +01:00
Args: []string{"--metrics", "--api-port=8090", "--data-dir=`pwd`/Codex1", "--disc-port=8070", "--log-level=TRACE"},
2023-02-08 14:19:47 +01:00
Stdout: stdout,
Stderr: stderr,
})
if err != nil {
t.Errorf(`starting client on node %d: %s`, i, err)
return err
}
if err != nil {
t.Errorf(`waiting for client on node %d: %s`, i, err)
return err
}
2023-02-09 15:36:41 +01:00
// codex seems to exit upon function exit
2023-02-09 16:34:19 +01:00
runout := &bytes.Buffer{}
runerr := &bytes.Buffer{}
2023-02-10 10:47:41 +01:00
// code below runs a local call to the api, WORKS
// time.Sleep(2 * time.Second)
// _, err = node.Run(cluster.StartProcRequest{
// Command: "curl",
// Args: []string{"http://127.0.0.1:8090/api/codex/v1/debug/info"},
// Stdout: runout,
// Stderr: runerr,
// })
2023-02-09 16:34:19 +01:00
fmt.Println(runout)
fmt.Println(runerr)
fmt.Println("---------------------")
2023-02-09 15:36:41 +01:00
fmt.Printf("HOST Output: %s\n\n", stdout.String())
fmt.Printf("HOST EOutput: %s\n\n", stderr.String())
// t.Logf("HOST Output: %s\n\n", stdout.String())
// t.Logf("HOST EOutput: %s\n\n", stderr.String())
2023-02-08 14:19:47 +01:00
return nil
2023-02-03 12:47:10 +01:00
})
2023-02-09 15:36:41 +01:00
time.Sleep(9 * time.Second)
2023-02-03 12:47:10 +01:00
continue
} else {
group.Go(func() error {
2023-02-10 10:47:41 +01:00
// calls to the api, DOES NOT WORK
2023-02-09 16:34:19 +01:00
resp, err := http.Get("http://127.0.0.1:8090/api/codex/v1/debug/info")
2023-02-03 12:47:10 +01:00
if err != nil {
log.Fatal(err)
}
fmt.Println(resp)
defer resp.Body.Close()
return nil
})
} // else {
// group.Go(func() error {
// stdout := &bytes.Buffer{}
// stderr := &bytes.Buffer{}
// _, err := node.StartProc(cluster.StartProcRequest{
// Command: "./build/codex",
// Args: []string{"--data-dir=\"$(pwd)/Codex2\"", "--api-port=8081", "--disc-port=8091", "--bootstrap-node=$(curl http://127.0.0.1:8080/api/codex/v1/debug/info 2>/dev/null | jq -r .spr)", "--log-level=TRACE", "-i=/ip4/0.0.0.0/tcp/50881", "-q=1099511627776"},
// Stdout: stdout,
// Stderr: stderr,
// })
// if err != nil {
// t.Errorf(`starting client on node %d: %s`, i, err)
// return nil
// }
// t.Logf("CLIENT Output: %s\n\n", stdout.String())
// t.Logf("CLIENT EOutput: %s\n\n", stderr.String())
// // t.Log("CLIENT proc: ", code)
// return nil
// })
// }
}
group.Wait()
})
}
// run(t, "local cluster", local.MustNewCluster())
2023-02-09 15:36:41 +01:00
run(t, "Docker cluster", docker.MustNewCluster().WithBaseImage("corbo12/nim-codex:v4"))
2023-02-03 12:47:10 +01:00
}