From 833fec0029039fa3901e11c37ea8524a73876135 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Fri, 17 Jan 2025 00:35:58 +0100 Subject: [PATCH] add logs --- management/server/management_test.go | 148 ++++++++++++++------------- 1 file changed, 75 insertions(+), 73 deletions(-) diff --git a/management/server/management_test.go b/management/server/management_test.go index 65fe99010..864a936e7 100644 --- a/management/server/management_test.go +++ b/management/server/management_test.go @@ -310,79 +310,81 @@ var _ = Describe("Management service", func() { }) }) - // Context("when there are 10 peers registered under one account", func() { - // Context("when there are 10 more peers registered under the same account", func() { - // Specify("all of the 10 peers will get updates of 10 newly registered peers", func() { - // initialPeers := 10 - // additionalPeers := 10 - // - // var peers []wgtypes.Key - // for i := 0; i < initialPeers; i++ { - // key, _ := wgtypes.GenerateKey() - // loginPeerWithValidSetupKey(serverPubKey, key, client) - // peers = append(peers, key) - // } - // - // wg := sync2.WaitGroup{} - // wgCounter := initialPeers + initialPeers*additionalPeers - // wg.Add(wgCounter) - // - // var clients []mgmtProto.ManagementService_SyncClient - // for _, peer := range peers { - // messageBytes, err := pb.Marshal(&mgmtProto.SyncRequest{Meta: &mgmtProto.PeerSystemMeta{}}) - // Expect(err).NotTo(HaveOccurred()) - // encryptedBytes, err := encryption.Encrypt(messageBytes, serverPubKey, peer) - // Expect(err).NotTo(HaveOccurred()) - // - // // open stream - // sync, err := client.Sync(context.TODO(), &mgmtProto.EncryptedMessage{ - // WgPubKey: peer.PublicKey().String(), - // Body: encryptedBytes, - // }) - // Expect(err).NotTo(HaveOccurred()) - // clients = append(clients, sync) - // - // // receive stream - // peer := peer - // go func() { - // for { - // encryptedResponse := &mgmtProto.EncryptedMessage{} - // err = sync.RecvMsg(encryptedResponse) - // if err != nil { - // break - // } - // decryptedBytes, err := encryption.Decrypt(encryptedResponse.Body, serverPubKey, peer) - // Expect(err).NotTo(HaveOccurred()) - // - // resp := &mgmtProto.SyncResponse{} - // err = pb.Unmarshal(decryptedBytes, resp) - // Expect(err).NotTo(HaveOccurred()) - // if len(resp.GetRemotePeers()) > 0 { - // // only consider peer updates - // wg.Done() - // } - // } - // }() - // } - // - // time.Sleep(1 * time.Second) - // for i := 0; i < additionalPeers; i++ { - // key, _ := wgtypes.GenerateKey() - // loginPeerWithValidSetupKey(serverPubKey, key, client) - // r := rand.New(rand.NewSource(time.Now().UnixNano())) - // n := r.Intn(200) - // time.Sleep(time.Duration(n) * time.Millisecond) - // } - // - // wg.Wait() - // - // for _, syncClient := range clients { - // err := syncClient.CloseSend() - // Expect(err).NotTo(HaveOccurred()) - // } - // }) - // }) - // }) + Context("when there are 10 peers registered under one account", func() { + Context("when there are 10 more peers registered under the same account", func() { + Specify("all of the 10 peers will get updates of 10 newly registered peers", func() { + initialPeers := 10 + additionalPeers := 10 + + var peers []wgtypes.Key + for i := 0; i < initialPeers; i++ { + key, _ := wgtypes.GenerateKey() + loginPeerWithValidSetupKey(serverPubKey, key, client) + peers = append(peers, key) + } + + wg := sync2.WaitGroup{} + wgCounter := initialPeers + initialPeers*additionalPeers + wg.Add(wgCounter) + + var clients []mgmtProto.ManagementService_SyncClient + for _, peer := range peers { + messageBytes, err := pb.Marshal(&mgmtProto.SyncRequest{Meta: &mgmtProto.PeerSystemMeta{}}) + Expect(err).NotTo(HaveOccurred()) + encryptedBytes, err := encryption.Encrypt(messageBytes, serverPubKey, peer) + Expect(err).NotTo(HaveOccurred()) + + // open stream + sync, err := client.Sync(context.TODO(), &mgmtProto.EncryptedMessage{ + WgPubKey: peer.PublicKey().String(), + Body: encryptedBytes, + }) + Expect(err).NotTo(HaveOccurred()) + clients = append(clients, sync) + + // receive stream + go func() { + for { + encryptedResponse := &mgmtProto.EncryptedMessage{} + err = sync.RecvMsg(encryptedResponse) + if err != nil { + break + } + decryptedBytes, err := encryption.Decrypt(encryptedResponse.Body, serverPubKey, peer) + Expect(err).NotTo(HaveOccurred()) + + resp := &mgmtProto.SyncResponse{} + err = pb.Unmarshal(decryptedBytes, resp) + Expect(err).NotTo(HaveOccurred()) + log.Println("Received Sync response in tests") + if len(resp.GetRemotePeers()) > 0 { + // only consider peer updates + wg.Done() + } else { + log.Println("Received empty Sync response in tests") + } + } + }() + } + + time.Sleep(1 * time.Second) + for i := 0; i < additionalPeers; i++ { + key, _ := wgtypes.GenerateKey() + loginPeerWithValidSetupKey(serverPubKey, key, client) + r := rand.New(rand.NewSource(time.Now().UnixNano())) + n := r.Intn(200) + time.Sleep(time.Duration(n) * time.Millisecond) + } + + wg.Wait() + + for _, syncClient := range clients { + err := syncClient.CloseSend() + Expect(err).NotTo(HaveOccurred()) + } + }) + }) + }) Context("when there are peers registered under one account concurrently", func() { Specify("then there are no duplicate IPs", func() {