def compare_shadow()

in source/tools/iot-dr-shadow-cmp.py [0:0]


def compare_shadow(i, c_iot_s, thing_name, shadow_payload):
    global NUM_SHADOWS_COMPARED, NUM_SHADOWS_NOTSYNCED, NUM_ERRORS
    try:
        logger.info('i: {} thing_name: {} shadow_payload: {}'.format(i, thing_name, shadow_payload))
        NUM_SHADOWS_COMPARED += 1
        shadow_payload_secondary = {}
        retries = 5
        wait = 2
        n = 1
        while not shadow_payload_secondary and n <= retries:
            logger.info('n: {}: get_shadow for thing_name: {}'.format(n, thing_name))
            n += 1
            shadow_payload_secondary = get_shadow(i, c_iot_s, thing_name)
            if not shadow_payload_secondary:
                retry_in = wait*n
                logger.info('n: {} thing_name: {}: no shadow payload, retrying in {} secs.'.format(n, thing_name, retry_in))
                time.sleep(retry_in)

        if not shadow_payload_secondary:
            logger.error('replication: thing_name: {}: shadow not replicated to secondary region'.format(thing_name))
            NUM_SHADOWS_NOTSYNCED += 1
            return

        logger.info('i: {} thing_name: {} shadow_payload: {} shadow_payload_secondary: {}'.format(i, thing_name, shadow_payload, shadow_payload_secondary))

        errors = []
        temperature = ""
        temperature_secondary = ""
        if 'temperature' in shadow_payload['state']['reported']:
            temperature = shadow_payload['state']['reported']['temperature']
        else:
            errors.append('thing_name: {} temperature not in shadow_payload'.format(thing_name))

        if 'temperature' in shadow_payload_secondary['state']['reported']:
            temperature_secondary = shadow_payload_secondary['state']['reported']['temperature']
        else:
            errors.append('thing_name: {}: temperature not in shadow_payload_secondary'.format(thing_name))

        if errors:
            logger.error('replication: {}'.format(errors))
            return

        logger.info('temperature: {} temperature_secondary: {}'.format(temperature, temperature_secondary))
        if temperature != temperature_secondary:
            logger.error('replication: thing_name: {} shadows missmatch: temperature: {} temperature_secondary: {}'.format(thing_name, temperature, temperature_secondary))
            return

        logger.info('i: {} thing_name: {} shadows match: temperature: {} temperature_secondary: {}'.format(i, thing_name, temperature, temperature_secondary))

    except Exception as e:
        logger.error('{}'.format(e))