예제 #1
0
 def setUpClass(self):
     # Handle both calling the this test from the context of the test directory
     # and calling this test from the context of the main directory.
     # The latter happens if you run all of the tests in the directory
     if os.path.exists(TIAB_ZIPFILE_NAME):
         tiabZipPath = TIAB_ZIPFILE_NAME
     elif os.path.exists(os.path.join('pytest', TIAB_ZIPFILE_NAME)):
         tiabZipPath = (os.path.join('pytest', TIAB_ZIPFILE_NAME))
     else:
         self.fail(NEED_TIAB_MSG)
     self.tiab = TiabSession(tiabZipPath=tiabZipPath)
     # Need to destroy whatever BDM may have been created automatically
     CppBlockUtils.BlockDataManager().DestroyBDM()
     newTheBDM()
     TheBDM.setDaemon(True)
     TheBDM.start()
     TheBDM.setSatoshiDir(
         os.path.join(self.tiab.tiabDirectory, 'tiab', '1', 'testnet3'))
     self.armoryHomeDir = os.path.join(self.tiab.tiabDirectory, 'tiab',
                                       'armory')
     TheBDM.setLevelDBDir(
         os.path.join(self.tiab.tiabDirectory, 'tiab', 'armory',
                      'databases'))
     TheBDM.setBlocking(True)
     TheBDM.setOnlineMode(wait=True)
     i = 0
     while not TheBDM.getBDMState() == 'BlockchainReady' and i < 10:
         time.sleep(2)
         i += 1
     if i >= 10:
         raise RuntimeError(
             "Timeout waiting for TheBDM to get into BlockchainReady state."
         )
예제 #2
0
 def setUpClass(self):
     # This is not a UI so no need to worry about the main thread being blocked.
     # Any UI that uses this Daemon can put the call to the Daemon on it's own thread.
     TheBDM.setBlocking(True)
     TheBDM.setOnlineMode(True)
     while not TheBDM.getBDMState() == 'BlockchainReady':
         time.sleep(2)
예제 #3
0
 def setUpClass(self):
    # This is not a UI so no need to worry about the main thread being blocked.
    # Any UI that uses this Daemon can put the call to the Daemon on it's own thread.
    TheBDM.setBlocking(True)
    TheBDM.setOnlineMode(True)
    while not TheBDM.getBDMState()=='BlockchainReady':
       time.sleep(2)
예제 #4
0
 def setUpClass(self):
    # Handle both calling the this test from the context of the test directory
    # and calling this test from the context of the main directory. 
    # The latter happens if you run all of the tests in the directory
    if os.path.exists(TIAB_ZIPFILE_NAME):
       tiabZipPath = TIAB_ZIPFILE_NAME
    elif os.path.exists(os.path.join('pytest',TIAB_ZIPFILE_NAME)):
       tiabZipPath = (os.path.join('pytest',TIAB_ZIPFILE_NAME))
    else:
       self.fail(NEED_TIAB_MSG)
    self.tiab = TiabSession(tiabZipPath=tiabZipPath)
    # Need to destroy whatever BDM may have been created automatically 
    CppBlockUtils.BlockDataManager().DestroyBDM()
    newTheBDM()
    TheBDM.setDaemon(True)
    TheBDM.start()
    TheBDM.setSatoshiDir(os.path.join(self.tiab.tiabDirectory,'tiab','1','testnet3'))
    self.armoryHomeDir = os.path.join(self.tiab.tiabDirectory,'tiab','armory')
    TheBDM.setLevelDBDir(os.path.join(self.tiab.tiabDirectory,'tiab','armory','databases'))
    TheBDM.setBlocking(True)
    TheBDM.setOnlineMode(wait=True)
    i = 0
    while not TheBDM.getBDMState()=='BlockchainReady' and i < 10:
       time.sleep(2)
       i += 1
    if i >= 10:
       raise RuntimeError("Timeout waiting for TheBDM to get into BlockchainReady state.")
예제 #5
0
def setupTheBDM():
   TheBDM.setBlocking(True)
   if not TheBDM.getState()==BDM_BLOCKCHAIN_READY:
      masterWallet.registerWallet()
      TheBDM.setOnlineMode(True)
      # Only executed on the first call if blockchain not loaded yet.
      LOGINFO('Blockchain loading')
      while not TheBDM.getState()==BDM_BLOCKCHAIN_READY:
         LOGINFO('Blockchain Not Ready Yet %s' % TheBDM.getState())
         time.sleep(2)
예제 #6
0
def setupTheBDM():
   TheBDM.setBlocking(True)
   if not TheBDM.getState()==BDM_BLOCKCHAIN_READY:
      masterWallet.registerWallet()
      TheBDM.setOnlineMode(True)
      # Only executed on the first call if blockchain not loaded yet.
      LOGINFO('Blockchain loading')
      while not TheBDM.getState()==BDM_BLOCKCHAIN_READY:
         LOGINFO('Blockchain Not Ready Yet %s' % TheBDM.getState())
         time.sleep(2)
예제 #7
0
def setupTheBDM():
   TheBDM.setBlocking(True)
   if not TheBDM.isInitialized():
      TheBDM.registerWallet(masterWallet)
      TheBDM.setOnlineMode(True)
      # Only executed on the first call if blockchain not loaded yet.
      LOGINFO('Blockchain loading')
      while not TheBDM.getBDMState()=='BlockchainReady':
         LOGINFO('Blockchain Not Ready Yet %s' % TheBDM.getBDMState())
         time.sleep(2)

################################################################################
if run_LoadBlockchain_Async:
   """
   By setting blocking=False, most calls to TheBDM will return immediately,
   after queuing the BDM to execute the operation in the background.  You have
   to check back later to see when it's done.  However, even when blocking is
   false, any functions that return data must block so the data can be 
   returned.  If you are in asynchronous mode, and don't want to ever wait 
   for anything, always check TheBDM.getState()==BDM_BLOCKCHAIN_READY before
   requesting data that will force blocking.
   """
   start = RightNow()
   TheBDM.setBlocking(False)
   TheBDM.setOnlineMode(True)
   sleep(2)
   print 'Waiting for blockchain loading to finish',
   while not TheBDM.getState()==BDM_BLOCKCHAIN_READY:
      print '.',
      sys.stdout.flush()
      sleep(2)
   print 'Loading blockchain took %0.1f sec' % (RightNow() - start)

   topBlock = TheBDM.getTopBlockHeight()
   print '\n\nCurrent Top Block is:', topBlock
   TheBDM.blockchain().top().pprint()

################################################################################
if run_LoadBlockchain_Block:
   start = RightNow()
    cppWallet.registerWallet()

################################################################################
if run_LoadBlockchain_Async:
    """
   By setting blocking=False, most calls to TheBDM will return immediately,
   after queuing the BDM to execute the operation in the background.  You have
   to check back later to see when it's done.  However, even when blocking is
   false, any functions that return data must block so the data can be 
   returned.  If you are in asynchronous mode, and don't want to ever wait 
   for anything, always check TheBDM.getState()==BDM_BLOCKCHAIN_READY before
   requesting data that will force blocking.
   """
    start = RightNow()
    TheBDM.setBlocking(False)
    TheBDM.setOnlineMode(True)
    sleep(2)
    print 'Waiting for blockchain loading to finish',
    while not TheBDM.getState() == BDM_BLOCKCHAIN_READY:
        print '.',
        sys.stdout.flush()
        sleep(2)
    print 'Loading blockchain took %0.1f sec' % (RightNow() - start)

    topBlock = TheBDM.getTopBlockHeight()
    print '\n\nCurrent Top Block is:', topBlock
    TheBDM.blockchain().top().pprint()

################################################################################
if run_LoadBlockchain_Block:
    start = RightNow()