Exemplo n.º 1
0
    def test_get_column_metadata(self):
        self.mox.StubOutWithMock(queuer.db, 'cursor')
        cur = self.mox.CreateMockAnything()
        queuer.db.cursor(None, dictionary=True).AndReturn(self.context(cur))
        cur.execute(mox.IgnoreArg())
        cur.fetchall().AndReturn([
            {'Field': 'f1', 'Key': 'PRI', 'Type': 'int(6)'},
            {'Field': 'F2', 'Key': 'IDX', 'Type': 'int(6)'},
            {'Field': 'F3', 'Key': 'IDX', 'Type': 'timestamp'},
            {'Field': 'Information', 'Key': '', 'Type': 'float(6)'},
        ])

        self.mox.StubOutWithMock(queuer.db, 'shard_connection')
        conn = self.mox.CreateMockAnything()
        queuer.db.shard_connection('dst', read=True).AndReturn(self.context(conn))
        conn.get_table_primary_key_columns('ns', 'anomaly').AndReturn(['f1', 'f3'])

        self.mox.ReplayAll()
        self.config.migration_type = orm.MigrationType.DELTA
        worker = queuer.QueueChunksWorkerMysql(self.config, self.redis)
        worker.get_column_metadata(None)
        columns = [
            db.Column(
                'f1',
                db.ColumnType.INT,
                True,
                ignore=False,
                source_alias=''
            ),
            db.Column(
                'F2',
                db.ColumnType.INT,
                False,
                ignore=False,
                source_alias=''
            ),
            db.Column(
                'F3',
                db.ColumnType.TIMESTAMP,
                True,
                ignore=False,
                source_alias=''
            ),
            db.Column(
                'Information',
                db.ColumnType.FLOAT,
                False,
                ignore=True,
                source_alias=''
            ),
        ]
        self.assertEqual(worker.c.columns, columns)
        self.assertEqual(worker.column_map, {col.lname: col for col in columns})
Exemplo n.º 2
0
    def test_get_column_metadata_delta_column_mismatch(self):
        self.mox.StubOutWithMock(queuer.db, 'cursor')
        cur = self.mox.CreateMockAnything()
        queuer.db.cursor(None, dictionary=True).AndReturn(self.context(cur))
        cur.execute(mox.IgnoreArg())
        cur.fetchall().AndReturn([
            {'Field': 'f1', 'Key': 'PRI', 'Type': 'int(6)'},
            {'Field': 'F2', 'Key': 'IDX', 'Type': 'int(6)'},
            {'Field': 'F3', 'Key': 'IDX', 'Type': 'timestamp'},
            {'Field': 'Information', 'Key': '', 'Type': 'float(6)'},
        ])

        self.mox.StubOutWithMock(queuer.db, 'shard_connection')
        conn = self.mox.CreateMockAnything()
        queuer.db.shard_connection('dst', read=True).AndReturn(self.context(conn))
        conn.get_table_primary_key_columns('ns', 'anomaly').AndReturn(['f1', 'z', 'f3'])

        self.mox.ReplayAll()
        self.config.migration_type = orm.MigrationType.DELTA
        worker = queuer.QueueChunksWorkerMysql(self.config, self.redis)
        with self.assertRaises(queuer.UnrecoverableError):
            worker.get_column_metadata(None)