mirror of
https://github.com/Quad4-Software/Reticulum-Go
synced 2026-08-29 23:48:44 -04:00
60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright (c) 2024-2026 Quad4.io
|
|
|
|
//go:build !js
|
|
|
|
package interfaces
|
|
|
|
import (
|
|
"sync"
|
|
"sync/atomic"
|
|
"testing"
|
|
"time"
|
|
|
|
"quad4/reticulum-go/pkg/common"
|
|
)
|
|
|
|
func TestHTTPSRaceStopSend(t *testing.T) {
|
|
port := freeHTTPSPort(t)
|
|
srv, err := NewHTTPSServerInterface("https_race_srv", "127.0.0.1", port, HTTPSServerOptions{
|
|
Path: "/rns",
|
|
LongPoll: 300 * time.Millisecond,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var n atomic.Int32
|
|
srv.SetPacketCallback(func([]byte, common.NetworkInterface) { n.Add(1) })
|
|
if err := srv.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer srv.Stop()
|
|
port = listenHTTPSPort(t, srv)
|
|
|
|
cli, err := NewHTTPSClientInterfaceWithRetries("https_race_cli", "127.0.0.1", port, true, 20, HTTPSClientOptions{
|
|
Path: "/rns",
|
|
LongPoll: 300 * time.Millisecond,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
waitOnline(t, cli, 5*time.Second)
|
|
waitHTTPSPeers(t, srv, 1, 5*time.Second)
|
|
|
|
var wg sync.WaitGroup
|
|
wg.Add(2)
|
|
go func() {
|
|
defer wg.Done()
|
|
for i := range 60 {
|
|
_ = cli.Send([]byte{0x50, byte(i)}, "")
|
|
time.Sleep(2 * time.Millisecond)
|
|
}
|
|
}()
|
|
go func() {
|
|
defer wg.Done()
|
|
time.Sleep(40 * time.Millisecond)
|
|
_ = cli.Stop()
|
|
}()
|
|
wg.Wait()
|
|
_ = n.Load()
|
|
}
|