我似乎记得读过有关与Amazon S3兼容的测试服务器,您可以在自己的服务器上运行以进行单元测试或其他任何操作。但是,我刚刚用谷歌和AWS来耐心等待这一点。这样的事情存在吗?如果没有,我想我会写一个。
注意:我问的是Amazon S3(存储系统)而不是Amazon EC2(云计算)。
你在想Park Place吗?
仅供参考,它的old home page现在离线。
我认为moto(qazxsw poi)是您进行单元测试的完美工具。 Moto模拟对S3,SQS等的所有访问,并且可以使用他们的Web服务器在任何编程语言中使用。
设置,轻量级和快速是微不足道的。
从moto的自述文件:
想象一下,您有以下要测试的代码:
https://github.com/spulec/moto
花一点时间思考过去你将如何测试它。现在看看如何用Moto测试它:
import boto
from boto.s3.key import Key
class MyModel(object):
def __init__(self, name, value):
self.name = name
self.value = value
def save(self):
conn = boto.connect_s3()
bucket = conn.get_bucket('mybucket')
k = Key(bucket)
k.key = self.name
k.set_contents_from_string(self.value)
Park Place已搬到github:import boto
from moto import mock_s3
from mymodule import MyModel
@mock_s3
def test_my_model_save():
model_instance = MyModel('steve', 'is awesome')
model_instance.save()
conn = boto.connect_s3()
assert conn.get_bucket('mybucket').get_key('steve') == 'is awesome'
http://github.com/technoweenie/parkplace Eucalyptus
EUCALYPTUS - 用于将您的程序链接到有用系统的弹性公用计算架构 - 是一个用于在集群上实现“云计算”的开源软件基础架构。 EUCALYPTUS的当前接口与Amazon的EC2接口兼容,但该基础架构旨在支持多个客户端接口。
请注意,根据文档,Eucalypus不仅包括EC2接口的重新实现,还包括S3存储系统的重新实现。该存储组件称为Walrus。 (http://eucalyptus.cs.ucsb.edu/)
http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2似乎是S3的最新重新实现,专门用于测试。
我们遇到了在本地测试基于S3的代码的问题,并实际实现了一个小型Java服务器,它模拟了S3对象API。由于它可能对其他人有用,我们设置了一个github repo以及一个小网站:Fake S3 - MIT许可下的所有OpenSource。
它非常小巧,可以在几分钟内完成设置。 (作为基于http://s3ninja.net的应用程序,中等服务器上的statup只需不到一秒钟)。
亚马逊使用Xen,因此您可以在自己的Xen安装中运行AMI。我只是启动一个实例并在那里运行测试。它的成本并不高,你通常可以在本地开发并且不经常在他们的系统上进行测试。