Files
LINUX-AETHERFORGE/internal/stratum/proxy_test.go
drjones 3678b199d0
Some checks failed
Test / test (push) Has been cancelled
Initial commit: AetherForge Linux (forge-mesh) v0.1.0-dev
2026-07-04 09:31:23 +00:00

75 lines
1.4 KiB
Go

package stratum
import (
"context"
"net"
"testing"
"time"
"forge-mesh/internal/config"
)
func TestProxyAcceptsConnection(t *testing.T) {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
defer ln.Close()
accepted := make(chan net.Conn, 1)
go func() {
conn, err := ln.Accept()
if err == nil {
accepted <- conn
}
}()
conn, err := net.Dial("tcp", ln.Addr().String())
if err != nil {
t.Fatal(err)
}
defer conn.Close()
select {
case c := <-accepted:
_, _ = conn.Write([]byte(`{"id":1,"method":"mining.subscribe","params":[]}` + "\n"))
buf := make([]byte, 256)
n, _ := c.Read(buf)
if n == 0 {
t.Fatal("expected bytes from miner")
}
c.Close()
case <-time.After(2 * time.Second):
t.Fatal("accept timeout")
}
}
func TestProxyStartNoUpstream(t *testing.T) {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
addr := ln.Addr().String()
ln.Close()
p := New(config.StratumConfig{XMRListen: addr})
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
if err := p.StartContext(ctx); err != nil {
t.Fatal(err)
}
defer p.Stop()
conn, err := net.DialTimeout("tcp", addr, time.Second)
if err != nil {
t.Fatal(err)
}
defer conn.Close()
_, err = conn.Write([]byte(`{"id":1,"method":"mining.subscribe","params":[]}` + "\n"))
if err != nil {
t.Fatal(err)
}
}