github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/test/regression/daily/chaincodeTests/envsetup/testYourChaincode.py (about)

     1  # Copyright IBM Corp. All Rights Reserved.
     2  #
     3  # SPDX-License-Identifier: Apache-2.0
     4  #
     5  
     6  #!/usr/bin/python2.7
     7  import subprocess
     8  import unittest
     9  from subprocess import check_output
    10  
    11  class ChaincodeAPI(unittest.TestCase):
    12  
    13      @classmethod
    14      def setUpClass(cls):
    15          cls.CHANNEL_NAME = "channel"
    16          cls.CHANNELS = '2'
    17          cls.CHAINCODES = '1'
    18          cls.ENDORSERS = '4'
    19          check_output(["./network_setup.sh up {0} {1} {2} {3}".format(cls.CHANNEL_NAME, cls.CHANNELS, cls.CHAINCODES, cls.ENDORSERS)],
    20                       shell=True)
    21  
    22      @classmethod
    23      def tearDownClass(cls):
    24          check_output(["./network_setup.sh down"], shell=True)
    25  
    26  #################################################################################
    27  
    28      def runIt(self, command, scriptName):
    29          cmd = "/opt/gopath/src/github.com/hyperledger/fabric/test/regression/daily/chaincodeTests/%s %s %s %s %s %s"% (scriptName, self.CHANNEL_NAME, self.CHANNELS, self.CHAINCODES, self.ENDORSERS, command)
    30          output = check_output(["docker exec cli {0}".format(cmd)], shell=True)
    31          return output
    32  
    33  #####Begin tests for different chaincode samples that exist in fabricExamples folder ###################
    34      def test_AFAB3843_Create_Join_Channel(self):
    35          ''' Create_Join_Channel must be run as the first test. Each chaincode test is dependent on this test
    36              So make sure when adding new tests this is picked up as the first one by py.test
    37          '''
    38          output = self.runIt("create", "fabricFeatureChaincodes/create_join_channel.sh")
    39          self.assertIn('Channel "channel0" is created successfully', output)
    40          self.assertIn('Channel "channel1" is created successfully', output)
    41  
    42          output = self.runIt("join", "fabricFeatureChaincodes/create_join_channel.sh")
    43          self.assertIn('PEER0 joined on the channel "channel0" successfully', output)
    44          self.assertIn('PEER0 joined on the channel "channel1" successfully', output)
    45          self.assertIn('PEER1 joined on the channel "channel0" successfully', output)
    46          self.assertIn('PEER1 joined on the channel "channel1" successfully', output)
    47          self.assertIn('PEER2 joined on the channel "channel0" successfully', output)
    48          self.assertIn('PEER2 joined on the channel "channel1" successfully', output)
    49          self.assertIn('PEER3 joined on the channel "channel0" successfully', output)
    50          self.assertIn('PEER3 joined on the channel "channel1" successfully', output)
    51  
    52      #@unittest.skip("skipping")
    53      def test_FAB3794_example02_invoke_query_inaloop_onallpeers(self):
    54          ''' This tests example02 chaincode where transfer values from assets
    55              "a" and "b" via Invoke and then verify values by Querying on Ledger.
    56          '''
    57          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_example02.sh")
    58          self.assertIn("Chaincode 'myccex020' is installed on PEER0 successfully", output)
    59          self.assertIn("Chaincode 'myccex020' is installed on PEER1 successfully", output)
    60          self.assertIn("Chaincode 'myccex020' is installed on PEER2 successfully", output)
    61          self.assertIn("Chaincode 'myccex020' is installed on PEER3 successfully", output)
    62  
    63          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_example02.sh")
    64          self.assertIn("Chaincode 'myccex020' Instantiation on PEER2 on 'channel0' is successful", output)
    65          self.assertIn("Chaincode 'myccex020' Instantiation on PEER2 on 'channel1' is successful", output)
    66  
    67          output = self.runIt("invokeQuery", "fabricFeatureChaincodes/e2e_test_example02.sh")
    68          self.assertIn('Query on PEER0 on channel0/myccex020 is successful', output)
    69          countPeer0Ch0 = output.count('Query on PEER0 on channel0/myccex020 is successful')
    70          self.assertEquals(countPeer0Ch0, 2)
    71          self.assertIn('Query on PEER1 on channel0/myccex020 is successful', output)
    72          countPeer1Ch0 = output.count('Query on PEER1 on channel0/myccex020 is successful')
    73          self.assertEquals(countPeer1Ch0, 2)
    74          self.assertIn('Query on PEER2 on channel0/myccex020 is successful', output)
    75          countPeer2Ch0 = output.count('Query on PEER2 on channel0/myccex020 is successful')
    76          self.assertEquals(countPeer2Ch0, 2)
    77          self.assertIn('Query on PEER3 on channel0/myccex020 is successful', output)
    78          countPeer3Ch0 = output.count('Query on PEER3 on channel0/myccex020 is successful')
    79          self.assertEquals(countPeer3Ch0, 2)
    80          self.assertIn('Query on PEER0 on channel1/myccex020 is successful', output)
    81          countPeer0Ch1 = output.count('Query on PEER0 on channel1/myccex020 is successful')
    82          self.assertEquals(countPeer0Ch1, 2)
    83          self.assertIn('Query on PEER1 on channel1/myccex020 is successful', output)
    84          countPeer1Ch1 = output.count('Query on PEER1 on channel1/myccex020 is successful')
    85          self.assertEquals(countPeer1Ch1, 2)
    86          self.assertIn('Query on PEER2 on channel1/myccex020 is successful', output)
    87          countPeer2Ch1 = output.count('Query on PEER2 on channel1/myccex020 is successful')
    88          self.assertEquals(countPeer2Ch1, 2)
    89          self.assertIn('Query on PEER3 on channel1/myccex020 is successful', output)
    90          countPeer3Ch1 = output.count('Query on PEER3 on channel1/myccex020 is successful')
    91          self.assertEquals(countPeer3Ch1, 2)
    92          self.assertIn('Invoke transaction on PEER0 on channel0/myccex020 is successful', output)
    93          self.assertIn('Invoke transaction on PEER1 on channel0/myccex020 is successful', output)
    94          self.assertIn('Invoke transaction on PEER2 on channel0/myccex020 is successful', output)
    95          self.assertIn('Invoke transaction on PEER3 on channel0/myccex020 is successful', output)
    96          self.assertIn('Invoke transaction on PEER0 on channel1/myccex020 is successful', output)
    97          self.assertIn('Invoke transaction on PEER1 on channel1/myccex020 is successful', output)
    98          self.assertIn('Invoke transaction on PEER2 on channel1/myccex020 is successful', output)
    99          self.assertIn('Invoke transaction on PEER3 on channel1/myccex020 is successful', output)
   100          self.assertIn('End-2-End for chaincode example02 completed successfully', output)
   101  
   102      @unittest.skip("skipping")
   103      def test_FAB3791_example03_negative_test_disallow_write_attempt_in_query(self):
   104          ''' Test writing to ledger via query fails as expected
   105          '''
   106          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_example03.sh")
   107          self.assertIn("successfully", output)
   108          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_example03.sh")
   109          self.assertIn("successfully", output)
   110          output = self.runIt("invokeQuery", "fabricFeatureChaincodes/e2e_test_example03.sh")
   111          self.assertIn('Query result on PEER0 is INVALID', output)
   112  
   113      @unittest.skip("skipping")
   114      def test_FAB3796_example04_chaincode_to_chaincode_call_on_occurrence_of_an_event(self):
   115          ''' Test chaincode to chaincode calling when an event is generated.
   116          '''
   117          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_example04.sh")
   118          self.assertIn("successfully", output)
   119          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_example04.sh")
   120          self.assertIn("successfully", output)
   121          output = self.runIt("invokeQuery", "fabricFeatureChaincodes/e2e_test_example04.sh")
   122          self.assertIn("successfully", output)
   123  
   124      @unittest.skip("skipping")
   125      def test_FAB3797_example05_chaincode_to_chaincode_call_on_same_and_different_channel(self):
   126          ''' Test chaincode to chaincode calling, when second chaincode exists
   127              on a different channel.
   128          '''
   129          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_example05.sh")
   130          self.assertIn("Chaincode 'myccex05' is installed on PEER0 successfully", output)
   131          self.assertIn("Chaincode 'myccex05' is installed on PEER1 successfully", output)
   132          self.assertIn("Chaincode 'myccex05' is installed on PEER2 successfully", output)
   133          self.assertIn("Chaincode 'myccex05' is installed on PEER3 successfully", output)
   134          self.assertIn("Chaincode 'ex02_b' is installed on PEER0 successfully", output)
   135          self.assertIn("Chaincode 'ex02_b' is installed on PEER1 successfully", output)
   136          self.assertIn("Chaincode 'ex02_b' is installed on PEER2 successfully", output)
   137          self.assertIn("Chaincode 'ex02_b' is installed on PEER3 successfully", output)
   138          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_example05.sh")
   139          self.assertIn("successfully", output)
   140          output = self.runIt("invokeQuery", "fabricFeatureChaincodes/e2e_test_example05.sh")
   141          self.assertIn("successfully", output)
   142  
   143      @unittest.skip("skipping")
   144      def test_FAB3792_marbles02_init_query_transfer_marbles(self):
   145          ''' This test few basic operations from marbles02 chaincode.
   146          '''
   147          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   148          self.assertIn("successfully", output)
   149          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   150          self.assertIn("successfully", output)
   151          output = self.runIt("initMarble1", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   152          self.assertIn("successful", output)
   153          output = self.runIt("queryMarble1", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   154          self.assertIn("successful", output)
   155          output = self.runIt("initMarble2", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   156          self.assertIn("successful", output)
   157          output = self.runIt("queryMarble2", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   158          self.assertIn("Query marble2 on PEER2 on channel0 on chaincode mymarbles020 is successful", output)
   159          output = self.runIt("txfrMarble", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   160          self.assertIn("Txfr marble1 on PEER2 on channel0 on chaincode mymarbles020 to JERRY is successful", output)
   161          output = self.runIt("queryAfterTxfrMarble", "fabricFeatureChaincodes/e2e_test_marbles02.sh")
   162          self.assertIn("Query marble1 on PEER2 on channel0 on chaincode mymarbles020 is successful", output)
   163  
   164      @unittest.skip("skipping")
   165      def test_FAB3793_chaincodeAPIDriver_exercise_chaincode_api_calls_as_invoke_functions(self):
   166          ''' Calling functions in shim/chaincode.go.
   167          '''
   168          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   169          self.assertIn("successfully", output)
   170          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   171          self.assertIn("successfully", output)
   172          output = self.runIt("invoke_getTxTimeStamp", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   173          self.assertIn("successful", output)
   174          output = self.runIt("invoke_getBinding", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   175          self.assertIn("successful", output)
   176          output = self.runIt("invoke_getCreator", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   177          self.assertIn("successful", output)
   178          output = self.runIt("invoke_getSignedProposal", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   179          self.assertIn("successful", output)
   180          output = self.runIt("invoke_getTransient", "fabricFeatureChaincodes/e2e_test_ccapidriver.sh")
   181          self.assertIn("successful", output)
   182  
   183      @unittest.skip("skipping")
   184      def test_FAB3793_chaincodeAPIDriver_2_exercise_chaincode_api_calls_as_direct_calls(self):
   185          ''' Calling functions in shim/chaincode.go.
   186          '''
   187          output = self.runIt("install", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   188          self.assertIn("successfully", output)
   189          output = self.runIt("instantiate", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   190          self.assertIn("successfully", output)
   191          output = self.runIt("invoke_getTxTimeStamp", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   192          self.assertIn("successful", output)
   193          output = self.runIt("invoke_getBinding", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   194          self.assertIn("successful", output)
   195          output = self.runIt("invoke_getCreator", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   196          self.assertIn("successful", output)
   197          output = self.runIt("invoke_getSignedProposal", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   198          self.assertIn("successful", output)
   199          output = self.runIt("invoke_getTransient", "fabricFeatureChaincodes/e2e_test_ccapidriver_two.sh")
   200          self.assertIn("successful", output)
   201  
   202      @unittest.skip("skipping")
   203      def test_FABXXXX_Laurie_Chaincode(self):
   204          ''' Calling functions in shim/chaincode.go.
   205          '''
   206          pass
   207  
   208      @unittest.skip("skipping")
   209      def test_FABXXXX_Alpha_Chaincode(self):
   210          ''' Calling functions in shim/chaincode.go.
   211          '''
   212          pass
   213  
   214      @unittest.skip("skipping")
   215      def test_FABXXXX_XYZ_Chaincode(self):
   216          ''' Calling functions in shim/chaincode.go.
   217          '''
   218          pass
   219  
   220      @unittest.skip("skipping")
   221      def test_FABXXXX_ABC_Chaincode(self):
   222          ''' Calling functions in shim/chaincode.go.
   223          '''
   224          pass