56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package graphvent
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
"crypto/rand"
|
|
"crypto/ecdh"
|
|
"crypto/ecdsa"
|
|
"crypto/elliptic"
|
|
)
|
|
|
|
func TestGQLDB(t * testing.T) {
|
|
ctx := logTestContext(t, []string{"loop", "node", "thread", "test", "signal", "policy", "db"})
|
|
|
|
TestUserNodeType := NodeType("TEST_USER")
|
|
err := ctx.RegisterNodeType(TestUserNodeType, []ExtType{})
|
|
fatalErr(t, err)
|
|
u1 := NewNode(ctx, RandID(), TestUserNodeType, nil)
|
|
|
|
ctx.Log.Logf("test", "U1_ID: %s", u1.ID)
|
|
|
|
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
|
|
fatalErr(t, err)
|
|
|
|
gql_ext := NewGQLExt(":0", ecdh.P256(), key, nil, nil)
|
|
listener_ext := NewListenerExt(10)
|
|
gql := NewNode(ctx, RandID(), GQLNodeType, nil,
|
|
gql_ext,
|
|
listener_ext,
|
|
NewACLExt(),
|
|
NewGroupExt(nil))
|
|
ctx.Log.Logf("test", "GQL_ID: %s", gql.ID)
|
|
|
|
err = ctx.Send(gql.ID, gql.ID, StopSignal)
|
|
fatalErr(t, err)
|
|
|
|
(*GraphTester)(t).WaitForStatus(ctx, listener_ext, "stopped", 100*time.Millisecond, "Didn't receive stopped on listener")
|
|
|
|
ser1, err := gql.Serialize()
|
|
ser2, err := u1.Serialize()
|
|
ctx.Log.Logf("test", "\n%s\n\n", ser1)
|
|
ctx.Log.Logf("test", "\n%s\n\n", ser2)
|
|
|
|
// Clear all loaded nodes from the context so it loads them from the database
|
|
ctx.Nodes = NodeMap{}
|
|
gql_loaded, err := LoadNode(ctx, gql.ID)
|
|
fatalErr(t, err)
|
|
listener_ext, err = GetExt[*ListenerExt](gql_loaded)
|
|
fatalErr(t, err)
|
|
err = ctx.Send(gql_loaded.ID, gql_loaded.ID, StopSignal)
|
|
fatalErr(t, err)
|
|
(*GraphTester)(t).WaitForStatus(ctx, listener_ext, "stopped", 100*time.Millisecond, "Didn't receive stopped on update_channel_2")
|
|
|
|
}
|
|
|