Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit 05c52e8

Browse files
committed
[FAB-8571] parent context opts integration test
Change-Id: I56c8777ef6a1996e6f9e9a89726c3a22b67ef56b Signed-off-by: Sudesh Shetty <sudesh.shetty@securekey.com>
1 parent 1309704 commit 05c52e8

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
Copyright SecureKey Technologies Inc. All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
package sdk
8+
9+
import (
10+
"strings"
11+
"testing"
12+
"time"
13+
14+
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
15+
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
16+
"github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt"
17+
"github.com/hyperledger/fabric-sdk-go/pkg/context"
18+
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk"
19+
"github.com/hyperledger/fabric-sdk-go/test/integration"
20+
)
21+
22+
//TestParentContext tests to make sure external grpc context can be passed as a parent context to highlevel functions
23+
func TestParentContext(t *testing.T) {
24+
25+
// Using shared SDK instance to increase test speed.
26+
sdk := mainSDK
27+
target := mainTestSetup.Targets[0]
28+
chaincodeID := mainChaincodeID
29+
30+
//prepare contexts
31+
org1AdminClientContext := sdk.Context(fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1Name))
32+
org1AdminChannelContext := sdk.ChannelContext(mainTestSetup.ChannelID, fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1Name))
33+
34+
//prepare context
35+
ctx, err := org1AdminClientContext()
36+
if err != nil {
37+
t.Fatal("failed to get client context")
38+
}
39+
40+
//get parent context and cancel
41+
parentContext, cancel := context.NewRequest(ctx, context.WithTimeout(20*time.Second))
42+
//Cancel in advance - to make sure test fails with 'context cancelled' error
43+
cancel()
44+
45+
// Resource management client
46+
resClient, err := resmgmt.New(org1AdminClientContext)
47+
if err != nil {
48+
t.Fatalf("Failed to create new resource management client: %s", err)
49+
}
50+
51+
_, err = resClient.QueryChannels(resmgmt.WithTargetURLs(target), resmgmt.WithParentContext(parentContext))
52+
if err == nil && !strings.Contains(err.Error(), "context canceled") {
53+
t.Fatalf("expected context cancelled error but got: %v", err)
54+
}
55+
56+
// Channel client
57+
chClient, err := channel.New(org1AdminChannelContext)
58+
if err != nil {
59+
t.Fatalf("Failed to create new resource management client: %s", err)
60+
}
61+
62+
_, err = chClient.Query(channel.Request{ChaincodeID: chaincodeID, Fcn: "invoke", Args: integration.ExampleCCQueryArgs()},
63+
channel.WithParentContext(parentContext))
64+
if err == nil && !strings.Contains(err.Error(), "context canceled") {
65+
t.Fatalf("expected context cancelled error but got: %v", err)
66+
}
67+
68+
// ledger client
69+
legerClient, err := ledger.New(org1AdminChannelContext)
70+
if err != nil {
71+
t.Fatalf("Failed to create new resource management client: %s", err)
72+
}
73+
74+
_, err = legerClient.QueryInfo(ledger.WithParentContext(parentContext))
75+
if err == nil && !strings.Contains(err.Error(), "context canceled") {
76+
t.Fatalf("expected context cancelled error but got: %v", err)
77+
}
78+
79+
}

0 commit comments

Comments
 (0)