Exemplo n.º 1
0
    def test_document_class(self):
        c = MasterSlaveConnection(self.master, self.slaves)
        db = c.pymongo_test
        w = 1 + len(self.slaves)
        db.test.insert({"x": 1}, w=w)

        self.assertEqual(dict, c.document_class)
        self.assertTrue(isinstance(db.test.find_one(), dict))
        self.assertFalse(isinstance(db.test.find_one(), SON))

        c.document_class = SON

        self.assertEqual(SON, c.document_class)
        self.assertTrue(isinstance(db.test.find_one(), SON))
        self.assertFalse(isinstance(db.test.find_one(as_class=dict), SON))

        c = MasterSlaveConnection(self.master, self.slaves, document_class=SON)
        db = c.pymongo_test

        self.assertEqual(SON, c.document_class)
        self.assertTrue(isinstance(db.test.find_one(), SON))
        self.assertFalse(isinstance(db.test.find_one(as_class=dict), SON))

        c.document_class = dict

        self.assertEqual(dict, c.document_class)
        self.assertTrue(isinstance(db.test.find_one(), dict))
        self.assertFalse(isinstance(db.test.find_one(), SON))
    def setUp(self):
        host = os.environ.get("DB_IP", "localhost")
        self.master = Connection(host, int(os.environ.get("DB_PORT", 27017)))

        self.slaves = []
        try:
            self.slaves.append(
                Connection(os.environ.get("DB_IP2", host),
                           int(os.environ.get("DB_PORT2", 27018)),
                           slave_okay=True))
        except ConnectionFailure:
            pass

        try:
            self.slaves.append(
                Connection(os.environ.get("DB_IP3", host),
                           int(os.environ.get("DB_PORT3", 27019)),
                           slave_okay=True))
        except ConnectionFailure:
            pass

        if not self.slaves:
            raise SkipTest()

        self.connection = MasterSlaveConnection(self.master, self.slaves)
        self.db = self.connection.pymongo_test
Exemplo n.º 3
0
    def setUp(self):
        raise SkipTest("master-slave setups are unsupported in TokuMX")

        self.master = MongoClient(host, port)

        self.slaves = []
        try:
            self.slaves.append(
                MongoClient(host2,
                            port2,
                            read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        try:
            self.slaves.append(
                MongoClient(host3,
                            port3,
                            read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        if not self.slaves:
            raise SkipTest("Not connected to master-slave set")

        self.client = MasterSlaveConnection(self.master, self.slaves)
        self.db = self.client.pymongo_test
Exemplo n.º 4
0
    def setUp(self):
        self.master = MongoClient(host, port)

        self.slaves = []
        try:
            self.slaves.append(
                MongoClient(host2,
                            port2,
                            read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        try:
            self.slaves.append(
                MongoClient(host3,
                            port3,
                            read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        if not self.slaves:
            raise SkipTest("Not connected to master-slave set")

        self.ctx = catch_warnings()
        warnings.simplefilter("ignore", DeprecationWarning)
        self.client = MasterSlaveConnection(self.master, self.slaves)
        self.db = self.client.pymongo_test
Exemplo n.º 5
0
 def master_slave_factory(master, slaves):
     master = _to_connection(master)
     slaves = map(_to_connection, slaves)
     return MasterSlaveConnection(master,
                                  slaves,
                                  document_class=document_class,
                                  tz_aware=tz_aware)
Exemplo n.º 6
0
    def setUp(self):
        host = os.environ.get("DB_IP", "localhost")
        self.master = Connection(host, int(os.environ.get("DB_PORT", 27017)))

        self.slaves = []
        try:
            self.slaves.append(
                Connection(os.environ.get("DB_IP2", host),
                           int(os.environ.get("DB_PORT2", 27018)),
                           read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        try:
            self.slaves.append(
                Connection(os.environ.get("DB_IP3", host),
                           int(os.environ.get("DB_PORT3", 27019)),
                           read_preference=ReadPreference.SECONDARY))
        except ConnectionFailure:
            pass

        if not self.slaves:
            raise SkipTest("Not connected to master-slave set")

        self.connection = MasterSlaveConnection(self.master, self.slaves)
        self.db = self.connection.pymongo_test
    def test_tz_aware(self):
        dt = datetime.datetime.utcnow()
        conn = MasterSlaveConnection(self.master, self.slaves)
        self.assertEqual(False, conn.tz_aware)
        db = conn.pymongo_test
        w = 1 + len(self.slaves)
        db.tztest.insert({'dt': dt}, safe=True, w=w)
        self.assertEqual(None, db.tztest.find_one()['dt'].tzinfo)

        conn = MasterSlaveConnection(self.master, self.slaves, tz_aware=True)
        self.assertEqual(True, conn.tz_aware)
        db = conn.pymongo_test
        db.tztest.insert({'dt': dt}, safe=True, w=w)
        self.assertEqual(utc, db.tztest.find_one()['dt'].tzinfo)

        conn = MasterSlaveConnection(self.master, self.slaves, tz_aware=False)
        self.assertEqual(False, conn.tz_aware)
        db = conn.pymongo_test
        db.tztest.insert({'dt': dt}, safe=True, w=w)
        self.assertEqual(None, db.tztest.find_one()['dt'].tzinfo)
Exemplo n.º 8
0
    def test_use_greenlets(self):
        self.assertFalse(self.client.use_greenlets)

        if thread_util.have_gevent:
            master = MongoClient(host, port, use_greenlets=True)
            slaves = [
                MongoClient(slave.host, slave.port, use_greenlets=True)
                for slave in self.slaves
            ]

            self.assertTrue(
                MasterSlaveConnection(master, slaves).use_greenlets)
Exemplo n.º 9
0
def _master_slave_connection(master, port, slaves):
    '''
    Master slave connection. Read from secondary.
    '''
    m_con = Connection(master, port)
    s_con = []
    for slave in slaves.split(','):
        items = slave.split(':')
        host = items[0]
        port = int(items[1]) or 27017 if len(items) > 1 else 27017
        s_con.append(Connection(host, port))
    con = MasterSlaveConnection(m_con, s_con)
    con.read_prefrence = ReadPreference.SECONDARY
    return con
Exemplo n.º 10
0
# -*- coding: utf-8 -*-

import gridfs
from pymongo import Connection
from pymongo.master_slave_connection import MasterSlaveConnection

import dbconf

try:
    dbconf.slave
except:
    conn = Connection(host=dbconf.master)
else:
    master_conn = Connection(host=dbconf.master)
    slave_conns = [Connection(host=i) for i in dbconf.slave]
    conn = MasterSlaveConnection(master_conn, slave_conns)

androidesk = conn['androidesk']
imgfs = gridfs.GridFS(conn['imgfs'])
"""user collection has 
   email:      注册邮箱 (str)
   nickname:   昵称 (str)
   passwd:     密码,明文 (str)
   avatar:     头像 (gridfs id)
   artist:     是否有创建主题权限 (bool)
   super:      是否是超级用户 (bool)
   wallpaper:  当前使用壁纸 (gridfs id)
   lastlogin:  最后一次登录 (datetime)
   IEME:       IEME (str)
   phone_number: 电话号码 (str)
   logined:    是否已登录(str)