Skip to content

Commit ad60816

Browse files
[FAB-4176] Weekly Test Runs for Auction App
Client Driver: testAuctionChainCode.py, api_driver.sh. Following transactions are performed on Auction App --Post Users --Get Users --Download Images --Get Items --Post Auction --Open Auction For Bids --Submit Bids --Transfer Item Change-Id: Id1890daecf450195426e065f1fc5b8d86d7a994e Signed-off-by: sandp125 <[email protected]>
1 parent 897ca82 commit ad60816

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed

test/regression/weekly/runGroup4.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
#
3+
# Copyright IBM Corp. All Rights Reserved.
4+
#
5+
# SPDX-License-Identifier: Apache-2.0
6+
#
7+
8+
######################################################################
9+
### Run one group of the tests in weekly test suite.
10+
11+
echo "========== Auction App 72Hr test"
12+
py.test -v --junitxml results_auction_72Hr.xml testAuctionChaincode.py
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#
2+
# Copyright IBM Corp. All Rights Reserved.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
#!/usr/bin/python
8+
# -*- coding: utf-8 -*-
9+
10+
######################################################################
11+
# To execute:
12+
# Install: sudo apt-get install python python-pytest
13+
# Run on command line: py.test -v --junitxml results_auction_daily.xml testAuctionChaincode.py
14+
15+
import subprocess
16+
import unittest
17+
from subprocess import check_output
18+
import shutil
19+
20+
21+
class ChaincodeAPI(unittest.TestCase):
22+
23+
@classmethod
24+
def setUpClass(cls):
25+
cls.CHANNEL_NAME = 'channel'
26+
cls.CHANNELS = '2'
27+
cls.CHAINCODES = '1'
28+
cls.ENDORSERS = '4'
29+
cls.RUN_TIME_HOURS = '72'
30+
check_output(['./generateCfgTrx.sh {0} {1}'.format(cls.CHANNEL_NAME, cls.CHANNELS)], cwd='../../envsetup', shell=True)
31+
check_output(['docker-compose -f docker-compose.yaml up -d'], cwd='../../envsetup', shell=True)
32+
33+
@classmethod
34+
def tearDownClass(cls):
35+
check_output(['docker-compose -f docker-compose.yaml down'], cwd='../../envsetup', shell=True)
36+
delete_this = ['__pycache__', '.cache']
37+
for item in delete_this:
38+
shutil.rmtree(item)
39+
40+
#################################################################################
41+
42+
def runIt(self, command, scriptName):
43+
cmd = \
44+
'/opt/gopath/src/github.com/hyperledger/fabric/test/tools/AuctionApp/%s %s %s %s %s %s %s' \
45+
% (
46+
scriptName,
47+
self.CHANNEL_NAME,
48+
self.CHANNELS,
49+
self.CHAINCODES,
50+
self.ENDORSERS,
51+
self.RUN_TIME_HOURS,
52+
command,
53+
)
54+
output = \
55+
check_output(['docker exec cli bash -c "{0}"'.format(cmd)],
56+
shell=True)
57+
return output
58+
59+
def test_FAB4176_1_Create_Channel(self):
60+
'''
61+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
62+
Description: This test is used to creates channels
63+
Passing criteria: Creating Channel is successful
64+
'''
65+
output = self.runIt('createChannel', 'api_driver.sh')
66+
self.assertIn('Creating Channel is successful', output)
67+
68+
69+
def test_FAB4176_2_Join_Channel(self):
70+
'''
71+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
72+
Description: This test is used to join peers on all channels
73+
Passing criteria: Join Channel is successful
74+
'''
75+
output = self.runIt('joinChannel', 'api_driver.sh')
76+
self.assertIn('Join Channel is successful', output)
77+
78+
79+
def test_FAB4176_3_Install_Chaincode(self):
80+
'''
81+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
82+
Description: This test is used to install all chaincodes on all peers
83+
Passing criteria: Installing chaincode is successful
84+
'''
85+
output = self.runIt('installChaincode', 'api_driver.sh')
86+
self.assertIn('Installing chaincode is successful', output)
87+
88+
89+
def test_FAB4176_4_Instantiate_Chaincode(self):
90+
'''
91+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
92+
Description: This test is used to instantiate all chaincodes on all channels
93+
Passing criteria: Instantiating chaincode is successful
94+
'''
95+
output = self.runIt('instantiateChaincode', 'api_driver.sh')
96+
self.assertIn('Instantiating chaincode is successful', output)
97+
98+
99+
def test_FAB4176_5_Post_Users(self):
100+
'''
101+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
102+
Description: This test is used to submit users to the auction application
103+
Passing criteria: Posting Users transaction is successful
104+
'''
105+
output = self.runIt('postUsers', 'api_driver.sh')
106+
self.assertIn('Posting Users transaction is successful', output)
107+
108+
109+
def test_FAB4176_6_Get_Users(self):
110+
'''
111+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
112+
Description: This test is used to query users submitted to the auction application
113+
Passing criteria: Get Users transaction is successful
114+
'''
115+
output = self.runIt('getUsers', 'api_driver.sh')
116+
self.assertIn('Get Users transaction is successful', output)
117+
118+
def test_FAB4176_7_Download_Images(self):
119+
'''
120+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
121+
Description: This test is used to download auction images on all chaincode containers
122+
Passing criteria: Download Images transaction is successful
123+
'''
124+
output = self.runIt('downloadImages', 'api_driver.sh')
125+
self.assertIn('Download Images transaction is successful',
126+
output)
127+
128+
129+
def test_FAB4176_8_Post_Items(self):
130+
'''
131+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
132+
Description: This test is used to submit auction items for a user to the auction application
133+
Passing criteria: Post Items transaction is successful
134+
'''
135+
output = self.runIt('postItems', 'api_driver.sh')
136+
self.assertIn('Post Items transaction is successful', output)
137+
138+
139+
def test_FAB4176_9_Auction_Invoke(self):
140+
'''
141+
Network: 1 Ord, 2 Org, 4 Peers, 2 Chan, 1 CC
142+
Description: This test runs for 1 Hr. It is used to open auction on the submitted items,
143+
submit bids to the auction, close auction and finally transfer item to a user.
144+
Passing criteria: Open Auction/Submit Bids/Close Auction/Transfer Item transaction(s) are successful
145+
'''
146+
output = self.runIt('auctionInvokes', 'api_driver.sh')
147+
self.assertIn('Open Auction/Submit Bids/Close Auction/Transfer Item transaction(s) are successful'
148+
, output)

0 commit comments

Comments
 (0)