Beispiel #1
0
"""
oshi -- Japanese grammar tester
"""
import threading
import random
from os import path
import database
import grammar

if not path.exists(database.DATABASE_FILENAME):
    if input("Database not found. Build now? (y/n) ").strip().lower() != "y":
        exit(0)
    try:
        filename = input("Filename (JMdict_e.gz): ").strip() or "JMdict_e.gz"
        print("Building...")
        database.build(filename)
        print("Build complete")
    except FileNotFoundError:
        print("Specified file not found.")
        exit(1)
    except ValueError:
        print("Extension not supported")
        exit(1)
    except:
        print("Unknown error")
        exit(1)

db = None


def load_database():
 def setUp(self):
     """
     Set up the database with some orders ready for a credit
     :return:
     """
     # Build the tests Logger
     self.log = logging.Logger("Tests")
     stream = logging.StreamHandler()
     formatter = logging.Formatter(fmt="%(message)s")
     stream.setFormatter(formatter)
     self.log.addHandler(stream)
     self.log.debug("TestCredits testcase")
     self.log.debug("running setUp")
     # build the database if it doesn't exist
     database.build(self.log)
     # set us up a bottle application with correct config
     self.app = bottle.Bottle()
     self.app.config.load_config("../pool_config")
     load_config.load(self.app, "exchange_config")
     # clear any existing orders in the database
     conn = sqlite3.connect("pool.db")
     c = conn.cursor()
     c.execute("DELETE FROM orders")
     c.execute("DELETE FROM credits")
     conn.commit()
     # create test data
     self.test_data = {
         "tier_1": {
             "TEST_USER_1": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_2": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_3": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_4": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
         },
         "tier_2": {
             "TEST_USER_1": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_2": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_3": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
             "TEST_USER_4": {"bid": random.randint(0, 1000), "ask": random.randint(0, 1000)},
         },
     }
     # add some orders to the database for test_data
     for tier in self.test_data:
         for user in self.test_data[tier]:
             for side in self.test_data[tier][user]:
                 c.execute(
                     "INSERT INTO orders ('user','tier','order_id',"
                     "'order_amount','order_type','exchange','unit') "
                     "VALUES (?,?,?,?,?,?,?)",
                     (
                         user,
                         tier,
                         random.randint(0, 250),
                         self.test_data[tier][user][side],
                         side,
                         "test_exchange",
                         "btc",
                     ),
                 )
     conn.commit()
     conn.close()
     self.log.debug("ending setUp")
 def setUp(self):
     """
     Set up the database with some orders ready for a credit
     :return:
     """
     # Build the tests Logger
     self.log = logging.Logger('Tests')
     stream = logging.StreamHandler()
     formatter = logging.Formatter(fmt='%(message)s')
     stream.setFormatter(formatter)
     self.log.addHandler(stream)
     self.log.debug('TestCredits testcase')
     self.log.debug('running setUp')
     # build the database if it doesn't exist
     database.build(self.log)
     # set us up a bottle application with correct config
     self.app = bottle.Bottle()
     self.app.config.load_config('../pool_config')
     load_config.load(self.app, 'exchange_config')
     # clear any existing orders in the database
     conn = sqlite3.connect('pool.db')
     c = conn.cursor()
     c.execute("DELETE FROM orders")
     c.execute("DELETE FROM credits")
     conn.commit()
     # create test data
     self.test_data = {
         'tier_1': {
             'TEST_USER_1': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_2': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_3': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_4': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)}},
         'tier_2': {
             'TEST_USER_1': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_2': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_3': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)},
             'TEST_USER_4': {
                 'bid': random.randint(0, 1000),
                 'ask': random.randint(0, 1000)}}}
     # add some orders to the database for test_data
     for tier in self.test_data:
         for user in self.test_data[tier]:
             for side in self.test_data[tier][user]:
                 c.execute("INSERT INTO orders ('user','tier','order_id',"
                           "'order_amount','order_type','exchange','unit') "
                           "VALUES (?,?,?,?,?,?,?)",
                           (user, tier, random.randint(0, 250),
                            self.test_data[tier][user][side], side, 'test_exchange',
                            'btc'))
     conn.commit()
     conn.close()
     self.log.debug('ending setUp')
server = WSGILogger(app, handlers, ApacheFormatter())

# Build the application Logger
log = logging.Logger('ALP')
rotating_file = TimedRotatingFileHandler('logs/alp-{}.log'.format(log_time),
                                         when='midnight')
stream = logging.StreamHandler()
formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(message)s',
                              datefmt='%y-%m-%d %H:%M:%S')
stream.setFormatter(formatter)
rotating_file.setFormatter(formatter)
log.addHandler(rotating_file)
log.addHandler(stream)

# Create the database if one doesn't exist
database.build(log)

# Install the SQLite plugin
app.install(SQLitePlugin(dbfile='pool.db', keyword='db'))

# Create the Exchange wrapper objects
wrappers = {'bittrex': Bittrex(),
            'bter': BTER(),
            'ccedk': CCEDK(),
            'poloniex': Poloniex(),
            'test_exchange': TestExchange()}

log.info('load pool config')
app.config.load_config('pool_config')

log.info('load exchange config')
server = WSGILogger(app, handlers, ApacheFormatter())

# Build the application Logger
log = logging.Logger('ALP')
rotating_file = TimedRotatingFileHandler('logs/alp-{}.log'.format(log_time),
                                         when='midnight')
stream = logging.StreamHandler()
formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(message)s',
                              datefmt='%y-%m-%d %H:%M:%S')
stream.setFormatter(formatter)
rotating_file.setFormatter(formatter)
log.addHandler(rotating_file)
log.addHandler(stream)

# Create the database if one doesn't exist
database.build(log)

# Install the SQLite plugin
app.install(SQLitePlugin(dbfile='pool.db', keyword='db'))

# Create the Exchange wrapper objects
wrappers = {
    'bittrex': Bittrex(),
    'bter': BTER(),
    'ccedk': CCEDK(),
    'poloniex': Poloniex(),
    'test_exchange': TestExchange()
}

log.info('load pool config')
app.config.load_config('pool_config')