mocks = mock.Mock()
    mocks.attach_mock(mock_init, 'init')
    mocks.attach_mock(mock_set, 'set')
    mocks.attach_mock(mock_parser, 'parser')
    mocks.attach_mock(mock_exists, 'exists')
    mock_exists.side_effect = [False, True]

    instance_config.InstanceConfig()
    expected_calls = [
        mock.call.init(
            config_file='template', config_header='/tmp/test.py template'),
        mock.call.exists('config'),
        mock.call.exists('distro'),
        mock.call.parser.SafeConfigParser(),
        mock.call.parser.SafeConfigParser().read('distro'),
        mock.call.parser.SafeConfigParser().sections(),
        mock.call.set('a', 'key: a', 'value: a', overwrite=False),
        mock.call.set('b', 'key: b', 'value: b', overwrite=False),
    ]
    self.assertEqual(mocks.mock_calls, expected_calls)

  @mock.patch('google_compute_engine.instance_setup.instance_config.config_manager.ConfigManager.WriteConfig')
  def testWriteConfig(self, mock_write):
    mock_config = instance_config.InstanceConfig()
    instance_config.InstanceConfig.WriteConfig(mock_config)
    mock_write.assert_called_once_with(config_file='config')


if __name__ == '__main__':
  unittest.main()
  def testGetMetadata(self):
    mock_response = mock.Mock()
    mock_response.return_value = {}
    self.mock_watcher._HandleMetadataUpdate = mock_response

    self.assertEqual(self.mock_watcher.GetMetadata(), {})
    mock_response.assert_called_once_with(
        metadata_key='', recursive=True, wait=False, timeout=None, retry=True)
    self.mock_watcher.logger.exception.assert_not_called()

  def testGetMetadataArgs(self):
    mock_response = mock.Mock()
    mock_response.return_value = {}
    self.mock_watcher._HandleMetadataUpdate = mock_response
    metadata_key = 'instance/id'
    recursive = False
    retry = False

    response = self.mock_watcher.GetMetadata(
        metadata_key=metadata_key, recursive=recursive, timeout=60,
        retry=retry)
    self.assertEqual(response, {})
    mock_response.assert_called_once_with(
        metadata_key=metadata_key, recursive=False, wait=False, timeout=60,
        retry=False)
    self.mock_watcher.logger.exception.assert_not_called()


if __name__ == '__main__':
  unittest.main()