如何模拟GCS进行离线测试

时间:2016-06-15 19:25:04

标签: c# python google-app-engine google-cloud-storage

我有一个Python Google App Engine应用程序,可以从Google云端存储中读取文件,我可以使用本地开发服务器(dev_appserver.py)离线测试,这很棒。

我还有一个.NET工具,可以根据样本here使用Google.Apis.Storage.v1.StorageService将文件转储到云存储桶中,以便App Engine应用程序检索。

这适用于写入“实时”云存储,但是如何设置StorageService与dev_appserver.py GCS模拟器通信,这样我可以在不使用实时云服务的情况下一起测试这两个工具?

或者,是否有一个不同的GCS本地磁盘“模拟器”可以与.NET客户端库和GAE本地开发服务器一起使用?

1 个答案:

答案 0 :(得分:0)

GAE GCS仿真使用github project called appengine-gcs-client。它包括一个名为local_run()(在common.py中)的函数的检查,它允许api知道它是在本地还是在生产中运行。

在本地运行时,gcs-client使用从local_api_url()返回的仿真URL。这最终看起来像:

http://localhost:8080/_ah/gcs

我建议,尝试从本地.net应用程序连接到上面的URL。这应该足以完成你想要做的事情。

def local_run():
  """Whether we should hit GCS dev appserver stub."""
  server_software = os.environ.get('SERVER_SOFTWARE')
  if server_software is None:
    return True
  if 'remote_api' in server_software:
    return False
  if server_software.startswith(('Development', 'testutil')):
    return True
  return False


def local_api_url():
  """Return URL for GCS emulation on dev appserver."""
  return 'http://%s%s' % (os.environ.get('HTTP_HOST'), LOCAL_GCS_ENDPOINT)

LOCAL_GCS_ENDPOINT = '/_ah/gcs'