def launchBitcoindAndGuardian(self): pargs = [self.executable] if USE_TESTNET: pargs.append('-testnet') elif USE_REGTEST: pargs.append('-regtest') pargs.append('-datadir=%s' % self.satoshiHome) try: # Don't want some strange error in this size-check to abort loading blocksdir = os.path.join(self.satoshiHome, 'blocks') sz = long(0) if os.path.exists(blocksdir): for fn in os.listdir(blocksdir): fnpath = os.path.join(blocksdir, fn) sz += long(os.path.getsize(fnpath)) if sz < 5 * GIGABYTE: if SystemSpecs.Memory > 9.0: pargs.append('-dbcache=2000') elif SystemSpecs.Memory > 5.0: pargs.append('-dbcache=1000') elif SystemSpecs.Memory > 3.0: pargs.append('-dbcache=500') except: LOGEXCEPT('Failed size check of blocks directory') kargs = {} if OS_WINDOWS: import win32process kargs['shell'] = True kargs['creationflags'] = win32process.CREATE_NO_WINDOW # Startup bitcoind and get its process ID (along with our own) argStr = " ".join(astr for astr in pargs) LOGWARN('Spawning bitcoind with command: ' + argStr) self.bitcoind = launchProcess(pargs, **kargs) self.btcdpid = self.bitcoind.pid self.selfpid = os.getpid() LOGINFO('PID of bitcoind: %d', self.btcdpid) LOGINFO('PID of armory: %d', self.selfpid) # Startup guardian process -- it will watch Armory's PID gpath = self.getGuardianPath() pargs = [gpath, str(self.selfpid), str(self.btcdpid)] if not OS_WINDOWS: pargs.insert(0, 'python') launchProcess(pargs, **kargs)
def launchBitcoindAndGuardian(self): pargs = [self.executable] if USE_TESTNET: pargs.append('-testnet') elif USE_REGTEST: pargs.append('-regtest') pargs.append('-datadir=%s' % self.satoshiHome) try: # Don't want some strange error in this size-check to abort loading blocksdir = os.path.join(self.satoshiHome, 'blocks') sz = long(0) if os.path.exists(blocksdir): for fn in os.listdir(blocksdir): fnpath = os.path.join(blocksdir, fn) sz += long(os.path.getsize(fnpath)) if sz < 5*GIGABYTE: if SystemSpecs.Memory>9.0: pargs.append('-dbcache=2000') elif SystemSpecs.Memory>5.0: pargs.append('-dbcache=1000') elif SystemSpecs.Memory>3.0: pargs.append('-dbcache=500') except: LOGEXCEPT('Failed size check of blocks directory') kargs = {} if OS_WINDOWS: import win32process kargs['shell'] = True kargs['creationflags'] = win32process.CREATE_NO_WINDOW # Startup bitcoind and get its process ID (along with our own) argStr = " ".join(astr for astr in pargs) LOGWARN('Spawning bitcoind with command: ' + argStr) self.bitcoind = launchProcess(pargs, **kargs) self.btcdpid = self.bitcoind.pid self.selfpid = os.getpid() LOGINFO('PID of bitcoind: %d', self.btcdpid) LOGINFO('PID of armory: %d', self.selfpid) # Startup guardian process -- it will watch Armory's PID gpath = self.getGuardianPath() pargs = [gpath, str(self.selfpid), str(self.btcdpid)] if not OS_WINDOWS: pargs.insert(0, 'python') launchProcess(pargs, **kargs)
def spawnDB(self, dataDir, dbDir): pargs = [self.dbExecutable] pargs.append('--db-type="' + ARMORY_DB_TYPE + '"') pargs.append('--cookie') if USE_TESTNET: pargs.append('--testnet') if USE_REGTEST: pargs.append('--regtest') haveSatoshiDir = False blocksdir = self.satoshiHome if os.path.exists(blocksdir): haveSatoshiDir = True else: blocksdir = os.path.join(self.satoshiHome, 'blocks') if os.path.exists(blocksdir): haveSatoshiDir = True if haveSatoshiDir: pargs.append('--satoshi-datadir="' + blocksdir + '"') pargs.append('--datadir="' + dataDir + '"') pargs.append('--dbdir="' + dbDir + '"') if CLI_OPTIONS.rebuild: pargs.append('--rebuild') elif CLI_OPTIONS.rescan: pargs.append('--rescan') elif CLI_OPTIONS.rescanBalance: pargs.append('--rescanSSH') if CLI_OPTIONS.clearMempool: pargs.append('--clear_mempool') if ARMORY_RAM_USAGE != -1: pargs.append('--ram-usage=' + ARMORY_RAM_USAGE) if ARMORY_THREAD_COUNT != -1: pargs.append('--thread-count=' + ARMORY_THREAD_COUNT) kargs = {} if OS_WINDOWS: import win32process kargs['shell'] = True kargs['creationflags'] = win32process.CREATE_NO_WINDOW argStr = " ".join(astr for astr in pargs) LOGWARN('Spawning DB with command:' + argStr) launchProcess(pargs, **kargs)
def launchBitcoindAndGuardian(self): pargs = [self.executable] if USE_TESTNET: testhome = self.satoshiHome[:] if self.satoshiHome.endswith('/testnet3/'): pargs.append('-datadir=%s' % self.satoshiHome[:-10]) elif self.satoshiHome.endswith('/testnet3'): pargs.append('-datadir=%s' % self.satoshiHome[:-9]) pargs.append('-testnet') else: pargs.append('-datadir=%s' % self.satoshiHome) try: # Don't want some strange error in this size-check to abort loading blocksdir = os.path.join(self.satoshiHome, 'blocks') sz = long(0) if os.path.exists(blocksdir): for fn in os.listdir(blocksdir): fnpath = os.path.join(blocksdir, fn) sz += long(os.path.getsize(fnpath)) if sz < 5*GIGABYTE: if SystemSpecs.Memory>9.0: pargs.append('-dbcache=2000') elif SystemSpecs.Memory>5.0: pargs.append('-dbcache=1000') elif SystemSpecs.Memory>3.0: pargs.append('-dbcache=500') except: LOGEXCEPT('Failed size check of blocks directory') # Startup bitcoind and get its process ID (along with our own) self.bitcoind = launchProcess(pargs) self.btcdpid = self.bitcoind.pid self.selfpid = os.getpid() LOGINFO('PID of bitcoind: %d', self.btcdpid) LOGINFO('PID of armory: %d', self.selfpid) # Startup guardian process -- it will watch Armory's PID gpath = self.getGuardianPath() pargs = [gpath, str(self.selfpid), str(self.btcdpid)] if not OS_WINDOWS: pargs.insert(0, 'python') launchProcess(pargs)
def launchBitcoindAndGuardian(self): pargs = [self.executable] if USE_TESTNET: testhome = self.satoshiHome[:] if self.satoshiHome.endswith('/testnet3/'): pargs.append('-datadir=%s' % self.satoshiHome[:-10]) elif self.satoshiHome.endswith('/testnet3'): pargs.append('-datadir=%s' % self.satoshiHome[:-9]) pargs.append('-testnet') else: pargs.append('-datadir=%s' % self.satoshiHome) try: # Don't want some strange error in this size-check to abort loading blocksdir = os.path.join(self.satoshiHome, 'blocks') sz = long(0) if os.path.exists(blocksdir): for fn in os.listdir(blocksdir): fnpath = os.path.join(blocksdir, fn) sz += long(os.path.getsize(fnpath)) if sz < 5*GIGABYTE: if SystemSpecs.Memory>9.0: pargs.append('-dbcache=2000') elif SystemSpecs.Memory>5.0: pargs.append('-dbcache=1000') elif SystemSpecs.Memory>3.0: pargs.append('-dbcache=500') except: LOGEXCEPT('Failed size check of blocks directory') # Startup bitcoind and get its process ID (along with our own) self.bitcoind = launchProcess(pargs) self.btcdpid = self.bitcoind.pid self.selfpid = os.getpid() LOGINFO('PID of peercoind: %d', self.btcdpid) LOGINFO('PID of armory: %d', self.selfpid) # Startup guardian process -- it will watch Armory's PID gpath = self.getGuardianPath() pargs = [gpath, str(self.selfpid), str(self.btcdpid)] if not OS_WINDOWS: pargs.insert(0, 'python') launchProcess(pargs)
def spawnDB(self, dataDir, dbDir): pargs = [self.dbExecutable] pargs.append('--db-type="' + ARMORY_DB_TYPE + '"') pargs.append('--cookie') if USE_TESTNET: pargs.append('--testnet') if USE_REGTEST: pargs.append('--regtest'); haveSatoshiDir = False blocksdir = os.path.join(self.satoshiHome, 'blocks') if os.path.exists(blocksdir): pargs.append('--satoshi-datadir="' + blocksdir + '"') pargs.append('--datadir="' + dataDir + '"') pargs.append('--dbdir="' + dbDir + '"') if CLI_OPTIONS.rebuild: pargs.append('--rebuild') elif CLI_OPTIONS.rescan: pargs.append('--rescan') elif CLI_OPTIONS.rescanBalance: pargs.append('--rescanSSH') if CLI_OPTIONS.clearMempool: pargs.append('--clear_mempool') if ARMORY_RAM_USAGE != -1: pargs.append('--ram-usage=' + ARMORY_RAM_USAGE) if ARMORY_THREAD_COUNT != -1: pargs.append('--thread-count=' + ARMORY_THREAD_COUNT) kargs = {} if OS_WINDOWS: import win32process kargs['shell'] = True kargs['creationflags'] = win32process.CREATE_NO_WINDOW argStr = " ".join(astr for astr in pargs) LOGWARN('Spawning DB with command: ' + argStr) launchProcess(pargs, **kargs)
def spawnDB(self, dataDir, dbDir): pargs = [self.dbExecutable] pargs.append('--db-type="' + ARMORY_DB_TYPE + '"') if USE_TESTNET: pargs.append('--testnet') if USE_REGTEST: pargs.append('--regtest'); blocksdir = os.path.join(self.satoshiHome, 'blocks') if not os.path.exists(blocksdir): raise self.BadPath, "Invalid blockdata path" randBase58 = SecureBinaryData().GenerateRandom(32).toBinStr() spawnId = binary_to_base58(randBase58) pargs.append('--spawnId="' + spawnId + '"') pargs.append('--satoshi-datadir="' + blocksdir + '"') pargs.append('--datadir="' + dataDir + '"') pargs.append('--dbdir="' + dbDir + '"') if CLI_OPTIONS.rebuild: pargs.append('--rebuild') elif CLI_OPTIONS.rescan: pargs.append('--rescan') elif CLI_OPTIONS.rescanBalance: pargs.append('--rescanSSH') if ARMORY_RAM_USAGE != -1: pargs.append('--ram-usage=' + ARMORY_RAM_USAGE) if ARMORY_THREAD_COUNT != -1: pargs.append('--thread-count=' + ARMORY_THREAD_COUNT) kargs = {} if OS_WINDOWS: #import win32process kargs['shell'] = True #kargs['creationflags'] = win32process.CREATE_NO_WINDOW launchProcess(pargs, **kargs) return spawnId