mirror of
https://github.com/safing/portbase
synced 2025-09-01 10:09:50 +00:00
103 lines
2.8 KiB
Go
103 lines
2.8 KiB
Go
// Copyright Safing ICS Technologies GmbH. Use of this source code is governed by the AGPL license that can be found in the LICENSE file.
|
|
|
|
package database
|
|
|
|
// import (
|
|
// "strconv"
|
|
// "strings"
|
|
// "sync"
|
|
// "testing"
|
|
// )
|
|
//
|
|
// var subTestWg sync.WaitGroup
|
|
//
|
|
// func waitForSubs(t *testing.T, sub *Subscription, highest int) {
|
|
// defer subTestWg.Done()
|
|
// expecting := 1
|
|
// var subbedModel Model
|
|
// forLoop:
|
|
// for {
|
|
// select {
|
|
// case subbedModel = <-sub.Created:
|
|
// case subbedModel = <-sub.Updated:
|
|
// }
|
|
// t.Logf("got model from subscription: %s", subbedModel.GetKey().String())
|
|
// if !strings.HasPrefix(subbedModel.GetKey().Name(), "sub") {
|
|
// // not a model that we use for testing, other tests might be interfering
|
|
// continue forLoop
|
|
// }
|
|
// number, err := strconv.Atoi(strings.TrimPrefix(subbedModel.GetKey().Name(), "sub"))
|
|
// if err != nil || number != expecting {
|
|
// t.Errorf("test subscription: got unexpected model %s, expected sub%d", subbedModel.GetKey().String(), expecting)
|
|
// continue forLoop
|
|
// }
|
|
// if number == highest {
|
|
// return
|
|
// }
|
|
// expecting++
|
|
// }
|
|
// }
|
|
//
|
|
// func TestSubscriptions(t *testing.T) {
|
|
//
|
|
// // create subscription
|
|
// sub := NewSubscription()
|
|
//
|
|
// // FIRST TEST
|
|
//
|
|
// subTestWg.Add(1)
|
|
// go waitForSubs(t, sub, 3)
|
|
// sub.Subscribe("/Tests/")
|
|
// t.Log(sub.String())
|
|
//
|
|
// (&(TestingModel{})).CreateInNamespace("", "sub1")
|
|
// (&(TestingModel{})).CreateInNamespace("A", "sub2")
|
|
// (&(TestingModel{})).CreateInNamespace("A/B/C/D/E", "sub3")
|
|
//
|
|
// subTestWg.Wait()
|
|
//
|
|
// // SECOND TEST
|
|
//
|
|
// subTestWg.Add(1)
|
|
// go waitForSubs(t, sub, 3)
|
|
// sub.Unsubscribe("/Tests/")
|
|
// sub.Subscribe("/Tests/A/****")
|
|
// t.Log(sub.String())
|
|
//
|
|
// (&(TestingModel{})).CreateInNamespace("", "subX")
|
|
// (&(TestingModel{})).CreateInNamespace("A", "sub1")
|
|
// (&(TestingModel{})).CreateInNamespace("A/B/C/D", "sub2")
|
|
// (&(TestingModel{})).CreateInNamespace("A/B/C/D/E", "subX")
|
|
// (&(TestingModel{})).CreateInNamespace("A", "sub3")
|
|
//
|
|
// subTestWg.Wait()
|
|
//
|
|
// // THIRD TEST
|
|
//
|
|
// subTestWg.Add(1)
|
|
// go waitForSubs(t, sub, 3)
|
|
// sub.Unsubscribe("/Tests/A/****")
|
|
// sub.Subscribe("/Tests/TestingModel:sub1")
|
|
// sub.Subscribe("/Tests/TestingModel:sub1/TestingModel")
|
|
// t.Log(sub.String())
|
|
//
|
|
// (&(TestingModel{})).CreateInNamespace("", "sub1")
|
|
// (&(TestingModel{})).CreateInNamespace("", "subX")
|
|
// (&(TestingModel{})).CreateInNamespace("TestingModel:sub1", "sub2")
|
|
// (&(TestingModel{})).CreateInNamespace("TestingModel:sub1/A", "subX")
|
|
// (&(TestingModel{})).CreateInNamespace("TestingModel:sub1", "sub3")
|
|
//
|
|
// subTestWg.Wait()
|
|
//
|
|
// // FINAL STUFF
|
|
//
|
|
// model := &TestingModel{}
|
|
// model.CreateInNamespace("Invalid", "subX")
|
|
// model.Save()
|
|
//
|
|
// sub.Destroy()
|
|
//
|
|
// // time.Sleep(1 * time.Second)
|
|
// // pprof.Lookup("goroutine").WriteTo(os.Stdout, 1)
|
|
//
|
|
// }
|