Skip to content

Commit

Permalink
uatest: use context
Browse files Browse the repository at this point in the history
  • Loading branch information
magiconair committed Jan 27, 2022
1 parent 73ac88c commit e3a606e
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 39 deletions.
8 changes: 5 additions & 3 deletions uatest/method_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,18 +54,20 @@ func TestCallMethod(t *testing.T) {
},
}

ctx := context.Background()

srv := NewServer("method_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

for _, tt := range tests {
t.Run(tt.req.ObjectID.String(), func(t *testing.T) {
resp, err := c.Call(tt.req)
resp, err := c.CallWithContext(ctx, tt.req)
if err != nil {
t.Fatal(err)
}
Expand Down
12 changes: 7 additions & 5 deletions uatest/namespace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,19 @@ import (
)

func TestNamespace(t *testing.T) {
ctx := context.Background()

srv := NewServer("rw_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

t.Run("NamespaceArray", func(t *testing.T) {
got, err := c.NamespaceArray()
got, err := c.NamespaceArrayWithContext(ctx)
if err != nil {
t.Fatal(err)
}
Expand All @@ -35,7 +37,7 @@ func TestNamespace(t *testing.T) {
verify.Values(t, "", got, want)
})
t.Run("FindNamespace", func(t *testing.T) {
ns, err := c.FindNamespace("http://gopcua.com/")
ns, err := c.FindNamespaceWithContext(ctx, "http://gopcua.com/")
if err != nil {
t.Fatal(err)
}
Expand All @@ -44,7 +46,7 @@ func TestNamespace(t *testing.T) {
}
})
t.Run("UpdateNamespaces", func(t *testing.T) {
err := c.UpdateNamespaces()
err := c.UpdateNamespacesWithContext(ctx)
if err != nil {
t.Fatal(err)
}
Expand Down
33 changes: 18 additions & 15 deletions uatest/read_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import (
"context"
"testing"

"github.com/pascaldekloe/goe/verify"

"github.com/gopcua/opcua"
"github.com/gopcua/opcua/ua"
"github.com/pascaldekloe/goe/verify"
)

// TestRead performs an integration test to read values
Expand All @@ -27,31 +28,33 @@ func TestRead(t *testing.T) {
{ua.NewStringNodeID(2, "2d_array_int32"), [][]int32{{1}, {2}, {3}}},
}

ctx := context.Background()

srv := NewServer("rw_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

for _, tt := range tests {
t.Run(tt.id.String(), func(t *testing.T) {
t.Run("Read", func(t *testing.T) {
testRead(t, c, tt.v, tt.id)
testRead(t, ctx, c, tt.v, tt.id)
})
t.Run("RegisteredRead", func(t *testing.T) {
testRegisteredRead(t, c, tt.v, tt.id)
testRegisteredRead(t, ctx, c, tt.v, tt.id)
})
})
}
}

func testRead(t *testing.T, c *opcua.Client, v interface{}, id *ua.NodeID) {
func testRead(t *testing.T, ctx context.Context, c *opcua.Client, v interface{}, id *ua.NodeID) {
t.Helper()

resp, err := c.Read(&ua.ReadRequest{
resp, err := c.ReadWithContext(ctx, &ua.ReadRequest{
NodesToRead: []*ua.ReadValueID{
&ua.ReadValueID{NodeID: id},
},
Expand All @@ -68,23 +71,23 @@ func testRead(t *testing.T, c *opcua.Client, v interface{}, id *ua.NodeID) {
}
}

func testRegisteredRead(t *testing.T, c *opcua.Client, v interface{}, id *ua.NodeID) {
func testRegisteredRead(t *testing.T, ctx context.Context, c *opcua.Client, v interface{}, id *ua.NodeID) {
t.Helper()

resp, err := c.RegisterNodes(&ua.RegisterNodesRequest{
resp, err := c.RegisterNodesWithContext(ctx, &ua.RegisterNodesRequest{
NodesToRegister: []*ua.NodeID{id},
})
if err != nil {
t.Fatalf("RegisterNodes failed: %s", err)
}

testRead(t, c, v, resp.RegisteredNodeIDs[0])
testRead(t, c, v, resp.RegisteredNodeIDs[0])
testRead(t, c, v, resp.RegisteredNodeIDs[0])
testRead(t, c, v, resp.RegisteredNodeIDs[0])
testRead(t, c, v, resp.RegisteredNodeIDs[0])
testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])

_, err = c.UnregisterNodes(&ua.UnregisterNodesRequest{
_, err = c.UnregisterNodesWithContext(ctx, &ua.UnregisterNodesRequest{
NodesToUnregister: []*ua.NodeID{id},
})
if err != nil {
Expand Down
8 changes: 5 additions & 3 deletions uatest/read_unknow_node_id_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ import (
// TestRead performs an integration test to read values
// from an OPC/UA server.
func TestReadUnknowNodeID(t *testing.T) {
ctx := context.Background()

srv := NewServer("read_unknow_node_id_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

// read node with unknown extension object
// This should be OK
Expand All @@ -41,7 +43,7 @@ func TestReadUnknowNodeID(t *testing.T) {
}

// check that the connection is still usable by reading another node.
_, err = c.Read(&ua.ReadRequest{
_, err = c.ReadWithContext(ctx, &ua.ReadRequest{
NodesToRead: []*ua.ReadValueID{
{
NodeID: ua.NewNumericNodeID(0, id.Server_ServerStatus_State),
Expand Down
9 changes: 5 additions & 4 deletions uatest/reconnection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,23 @@ const (
// TestAutoReconnection performs an integration test the auto reconnection
// from an OPC/UA server.
func TestAutoReconnection(t *testing.T) {
ctx := context.Background()

srv := NewServer("reconnection_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

m, err := monitor.NewNodeMonitor(c)
if err != nil {
t.Fatal(err)
}

ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithCancel(ctx)
defer cancel()

tests := []struct {
Expand Down Expand Up @@ -102,7 +103,7 @@ func TestAutoReconnection(t *testing.T) {

downC := make(chan struct{}, 1)
dTimeout := time.NewTimer(disconnectTimeout)
go c.Call(tt.req)
go c.CallWithContext(ctx, tt.req)

ctx, cancel := context.WithCancel(context.Background())
go func() {
Expand Down
9 changes: 6 additions & 3 deletions uatest/stats_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ import (
"expvar"
"testing"

"github.com/pascaldekloe/goe/verify"

"github.com/gopcua/opcua"
"github.com/gopcua/opcua/stats"
"github.com/pascaldekloe/goe/verify"
)

func newExpVarInt(i int64) *expvar.Int {
Expand All @@ -22,15 +23,17 @@ func newExpVarInt(i int64) *expvar.Int {
func TestStats(t *testing.T) {
stats.Reset()

ctx := context.Background()

srv := NewServer("rw_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}

c.Close()
c.CloseWithContext(ctx)

want := map[string]*expvar.Int{
"Dial": newExpVarInt(1),
Expand Down
15 changes: 9 additions & 6 deletions uatest/write_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//go:build integration
// +build integration

package uatest
Expand Down Expand Up @@ -26,18 +27,20 @@ func TestWrite(t *testing.T) {
{ua.NewStringNodeID(2, "ro_bool"), false, ua.StatusBadUserAccessDenied},
}

ctx := context.Background()

srv := NewServer("rw_server.py")
defer srv.Close()

c := opcua.NewClient(srv.Endpoint, srv.Opts...)
if err := c.Connect(context.Background()); err != nil {
if err := c.Connect(ctx); err != nil {
t.Fatal(err)
}
defer c.Close()
defer c.CloseWithContext(ctx)

for _, tt := range tests {
t.Run(tt.id.String(), func(t *testing.T) {
testWrite(t, c, tt.status, &ua.WriteRequest{
testWrite(t, ctx, c, tt.status, &ua.WriteRequest{
NodesToWrite: []*ua.WriteValue{
&ua.WriteValue{
NodeID: tt.id,
Expand All @@ -55,15 +58,15 @@ func TestWrite(t *testing.T) {
return
}

testRead(t, c, tt.v, tt.id)
testRead(t, ctx, c, tt.v, tt.id)
})
}
}

func testWrite(t *testing.T, c *opcua.Client, status ua.StatusCode, req *ua.WriteRequest) {
func testWrite(t *testing.T, ctx context.Context, c *opcua.Client, status ua.StatusCode, req *ua.WriteRequest) {
t.Helper()

resp, err := c.Write(req)
resp, err := c.WriteWithContext(ctx, req)
if err != nil {
t.Fatalf("Write failed: %s", err)
}
Expand Down

0 comments on commit e3a606e

Please sign in to comment.