def test_api_alibaba_mongod(aggregator):
    log = mock.MagicMock()
    config = MongoConfig(common.INSTANCE_BASIC, log)

    payload = {
        'isMaster': {},
        'replSetGetStatus': {
            'myState': 1,
            'set': 'foo',
            'configsvr': False
        },
        'shardingState': {
            'enabled': False
        },
    }
    mocked_client = mock.MagicMock()
    mocked_client.__getitem__ = mock.MagicMock(return_value=mock.MagicMock(
        command=payload.__getitem__))

    with mock.patch('datadog_checks.mongo.api.MongoClient',
                    mock.MagicMock(return_value=mocked_client)):
        api = MongoApi(config, log)
        deployment_type = api._get_alibaba_deployment_type()
        assert isinstance(deployment_type, ReplicaSetDeployment)
        assert deployment_type.cluster_role is None
        assert deployment_type.replset_state_name == 'primary'
        assert deployment_type.use_shards is False
        assert deployment_type.is_primary is True
        assert deployment_type.is_secondary is False
        assert deployment_type.is_arbiter is False
        assert deployment_type.replset_state == 1
        assert deployment_type.replset_name == 'foo'
def test_api_alibaba_mongos(aggregator):
    log = mock.MagicMock()
    config = MongoConfig(common.INSTANCE_BASIC, log)
    payload = {'isMaster': {'msg': 'isdbgrid'}}
    mocked_client = mock.MagicMock()
    mocked_client.__getitem__ = mock.MagicMock(return_value=mock.MagicMock(
        command=payload.__getitem__))

    with mock.patch('datadog_checks.mongo.api.MongoClient',
                    mock.MagicMock(return_value=mocked_client)):
        api = MongoApi(config, log)
        deployment_type = api._get_alibaba_deployment_type()
        assert isinstance(deployment_type, MongosDeployment)