This commit is contained in:
number571 2023-11-24 23:45:07 +07:00
parent 3aea334d44
commit 3ecf90aad2
6 changed files with 1041 additions and 939 deletions

View File

@ -17,6 +17,12 @@ func testRunService(addr string) *http.Server {
FMessagesCapacity: testutils.TCCapacity,
FWorkSizeBits: testutils.TCWorkSize,
},
FProducers: []string{
testutils.TgAddrs[42],
},
FConsumers: []string{
testutils.TgAddrs[43],
},
}
logger := logger.NewLogger(

View File

@ -0,0 +1,37 @@
package handler
import (
"net/http"
"testing"
"time"
hll_client "github.com/number571/go-peer/cmd/hidden_lake/loader/pkg/client"
"github.com/number571/go-peer/cmd/hidden_lake/loader/pkg/settings"
testutils "github.com/number571/go-peer/test/_data"
)
func TestHandleIndexAPI(t *testing.T) {
t.Parallel()
service := testRunService(testutils.TgAddrs[45])
defer service.Close()
time.Sleep(100 * time.Millisecond)
hllClient := hll_client.NewClient(
hll_client.NewRequester(
"http://"+testutils.TgAddrs[45],
&http.Client{Timeout: time.Second / 2},
),
)
title, err := hllClient.GetIndex()
if err != nil {
t.Error(err)
return
}
if title != settings.CTitlePattern {
t.Error("incorrect title pattern")
return
}
}

View File

@ -1,140 +1,199 @@
package handler
// import (
// "fmt"
// "net/http"
// "os"
// "testing"
// "time"
import (
"fmt"
"net/http"
"os"
"testing"
"time"
// hll_client "github.com/number571/go-peer/cmd/hidden_lake/loader/pkg/client"
// hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
// hls_app "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/app"
// hlt_client "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/client"
// "github.com/number571/go-peer/pkg/client"
// "github.com/number571/go-peer/pkg/client/message"
// "github.com/number571/go-peer/pkg/crypto/asymmetric"
// net_message "github.com/number571/go-peer/pkg/network/message"
// "github.com/number571/go-peer/pkg/payload"
// testutils "github.com/number571/go-peer/test/_data"
// )
hll_client "github.com/number571/go-peer/cmd/hidden_lake/loader/pkg/client"
hls_settings "github.com/number571/go-peer/cmd/hidden_lake/service/pkg/settings"
hls_app "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/app"
hlt_client "github.com/number571/go-peer/cmd/hidden_lake/traffic/pkg/client"
"github.com/number571/go-peer/pkg/client"
"github.com/number571/go-peer/pkg/client/message"
"github.com/number571/go-peer/pkg/crypto/asymmetric"
net_message "github.com/number571/go-peer/pkg/network/message"
"github.com/number571/go-peer/pkg/payload"
"github.com/number571/go-peer/pkg/types"
testutils "github.com/number571/go-peer/test/_data"
)
// const (
// tcTestData = "./test_data"
// tcNameHLT1 = tcTestData + "/hlt_1"
// tcNameHLT2 = tcTestData + "/hlt_2"
// )
const (
tcMessageSize = (8 << 10)
)
// func TestTransferAPI(t *testing.T) {
// t.Parallel()
const (
tcTestData = "./test_data"
tcNameHLT1 = tcTestData + "/hlt_1"
tcNameHLT2 = tcTestData + "/hlt_2"
)
// netMsgSettings := net_message.NewSettings(&net_message.SSettings{
// FWorkSizeBits: testutils.TCWorkSize,
// })
func testCreateHLS(netMsgSettings net_message.ISettings, path, addr string) (types.IApp, hlt_client.IClient, error) {
if err := copyWithPaste(path, addr); err != nil {
return nil, nil, err
}
// if err := copyWithPaste(tcNameHLT1, testutils.TgAddrs[42]); err != nil {
// t.Error(err)
// return
// }
// defer os.Remove(tcNameHLT1 + "/hlt.cfg")
app1, err := hls_app.InitApp(path)
if err != nil {
return nil, nil, err
}
// app1, err := hls_app.InitApp(tcNameHLT1)
// if err != nil {
// t.Error(err)
// return
// }
// if err := app1.Run(); err != nil {
// t.Error(err)
// return
// }
if err := app1.Run(); err != nil {
return nil, nil, err
}
// hltClient1 := hlt_client.NewClient(
// hlt_client.NewBuilder(),
// hlt_client.NewRequester(
// testutils.TgAddrs[42],
// &http.Client{Timeout: time.Minute / 2},
// netMsgSettings,
// ),
// )
hltClient1 := hlt_client.NewClient(
hlt_client.NewBuilder(),
hlt_client.NewRequester(
"http://"+addr,
&http.Client{Timeout: time.Minute / 2},
netMsgSettings,
),
)
// msgSettings := message.NewSettings(
// &message.SSettings{
// FMessageSizeBytes: testutils.TCMessageSize,
// },
// )
// privKey := asymmetric.LoadRSAPrivKey(testutils.Tc1PrivKey1024)
// client := client.NewClient(msgSettings, privKey)
return app1, hltClient1, nil
}
// for i := 0; i < 5; i++ {
// encMsg, err := client.EncryptPayload(
// privKey.GetPubKey(),
// payload.NewPayload(
// uint64(i),
// []byte("hello, world!"),
// ),
// )
// if err != nil {
// t.Error(err)
// return
// }
// err = hltClient1.PutMessage(
// net_message.NewMessage(
// netMsgSettings,
// payload.NewPayload(
// hls_settings.CNetworkMask,
// encMsg.ToBytes(),
// ),
// ),
// )
// if err != nil {
// t.Error(err)
// return
// }
// }
func testInitTransfer() {
os.RemoveAll(tcNameHLT1)
os.RemoveAll(tcNameHLT2)
// if err := copyWithPaste(tcNameHLT2, testutils.TgAddrs[43]); err != nil {
// t.Error(err)
// return
// }
// defer os.Remove(tcNameHLT2 + "/hlt.cfg")
os.Mkdir(tcNameHLT1, 0o777)
os.Mkdir(tcNameHLT2, 0o777)
}
// app2, err := hls_app.InitApp(tcNameHLT2)
// if err != nil {
// t.Error(err)
// return
// }
// if err := app2.Run(); err != nil {
// t.Error(err)
// return
// }
func TestHandleTransferAPI(t *testing.T) {
t.Parallel()
// service := testRunService(testutils.TgAddrs[44])
// defer service.Close()
testInitTransfer()
defer func() {
os.RemoveAll(tcNameHLT1)
os.RemoveAll(tcNameHLT2)
}()
// time.Sleep(100 * time.Millisecond)
// hllClient := hll_client.NewClient(
// hll_client.NewRequester(
// testutils.TgAddrs[44],
// &http.Client{Timeout: time.Second / 2},
// ),
// )
// INIT SERVICES
// if err := hllClient.RunTransfer(); err != nil {
// t.Error(err)
// return
// }
netMsgSettings := net_message.NewSettings(&net_message.SSettings{
FWorkSizeBits: testutils.TCWorkSize,
})
// time.Sleep(5 * time.Second) // TODO
// }
hltApp1, hltClient1, err := testCreateHLS(netMsgSettings, tcNameHLT1, testutils.TgAddrs[42])
if err != nil {
t.Error(err)
return
}
defer hltApp1.Stop()
// func copyWithPaste(pathTo, addr string) error {
// cfgDataFmt, err := os.ReadFile(tcTestData + "/hlt_copy.cfg")
// if err != nil {
// return err
// }
// return os.WriteFile(
// pathTo+"/hlt.cfg",
// []byte(fmt.Sprintf(string(cfgDataFmt), testutils.TCWorkSize, addr)),
// 0o644,
// )
// }
hltApp2, hltClient2, err := testCreateHLS(netMsgSettings, tcNameHLT2, testutils.TgAddrs[43])
if err != nil {
t.Error(err)
return
}
defer hltApp2.Stop()
service := testRunService(testutils.TgAddrs[44])
defer service.Close()
time.Sleep(100 * time.Millisecond)
hllClient := hll_client.NewClient(
hll_client.NewRequester(
"http://"+testutils.TgAddrs[44],
&http.Client{Timeout: time.Second / 2},
),
)
// PUSH MESSAGES
msgSettings := message.NewSettings(
&message.SSettings{
FMessageSizeBytes: tcMessageSize,
},
)
privKey := asymmetric.LoadRSAPrivKey(testutils.Tc1PrivKey1024)
client := client.NewClient(msgSettings, privKey)
for i := 0; i < 5; i++ {
encMsg, err := client.EncryptPayload(
privKey.GetPubKey(),
payload.NewPayload(
uint64(i),
[]byte("hello, world!"),
),
)
if err != nil {
t.Error(err)
return
}
err = hltClient1.PutMessage(
net_message.NewMessage(
netMsgSettings,
payload.NewPayload(
hls_settings.CNetworkMask,
encMsg.ToBytes(),
),
),
)
if err != nil {
t.Error(err)
return
}
}
// TRANSFER MESSAGES
if err := hllClient.RunTransfer(); err != nil {
t.Error(err)
return
}
// LOAD MESSAGES
hashes, err := hltClient2.GetHashes()
if err != nil {
t.Error(err)
return
}
for i, h := range hashes {
netMsg, err := hltClient2.GetMessage(h)
if err != nil {
t.Error(err)
return
}
msg, err := message.LoadMessage(msgSettings, netMsg.GetPayload().ToBytes())
if err != nil {
t.Error(err)
return
}
pubKey, pld, err := client.DecryptMessage(msg)
if err != nil {
t.Error(err)
return
}
if pld.GetHead() != uint64(i) {
t.Error("got bad index")
return
}
if pubKey.GetAddress().ToString() != client.GetPubKey().GetAddress().ToString() {
t.Error("got bad public key")
return
}
}
}
func copyWithPaste(pathTo, addr string) error {
cfgDataFmt, err := os.ReadFile(tcTestData + "/hlt_copy.cfg")
if err != nil {
return err
}
return os.WriteFile(
pathTo+"/hlt.cfg",
[]byte(fmt.Sprintf(string(cfgDataFmt), testutils.TCWorkSize, addr)),
0o644,
)
}

View File

@ -77,7 +77,7 @@ func HandleMessageAPI(pCfg config.IConfig, pWrapperDB database.IWrapperDB, pHTTP
if netMsg.GetPayload().GetHead() != hls_settings.CNetworkMask {
pHTTPLogger.PushWarn(logBuilder.WithMessage("network_mask"))
api.Response(pW, http.StatusTeapot, "failed: network mask")
api.Response(pW, http.StatusLocked, "failed: network mask")
return
}

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="coverage: 46%"><title>coverage: 46%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="35" height="20" fill="#e05d44"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="775" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">46%</text><text x="775" y="140" transform="scale(.1)" fill="#fff" textLength="250">46%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="coverage: 47%"><title>coverage: 47%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="35" height="20" fill="#e05d44"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="775" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">47%</text><text x="775" y="140" transform="scale(.1)" fill="#fff" textLength="250">47%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because it is too large Load Diff