2008-09-18 70 views
16

我似乎回想起有关Amazon S3兼容测试服务器的阅读,您可以在自己的服务器上运行单元测试或其他任何服务器。不过,我刚刚用我的耐心与Google和AWS一起寻找这个。这样的事情存在吗?如果不是,我想我会写一个。亚马逊S3独立存根服务器

注意:我询问的是Amazon S3(存储系统),而不是Amazon EC2(云计算)。

+0

有点相关(虽然更多面向生产使用比单元测试):http://serverfault.com/questions/283914/s3-compatible-object-storage-systems – Thilo 2012-03-14 07:30:33

回答

6

您是否想到Park Place

FYI,它的old home page目前无法显示。

+0

我想我是,谢谢! – 2008-09-21 04:03:39

-3

亚马逊使用Xen,因此您可以在自己的Xen安装中运行AMI。不过,我只是启动一个实例并在那里运行测试。它不会花费太多,你通常应该在本地开发并且很少在他们的系统上进行测试。

+1

我想你在谈论EC2(云计算),而我想知道S3(存储系统)。 – 2008-09-18 10:30:03

1

Eucalyptushttp://eucalyptus.cs.ucsb.edu/

桉树 - 弹性公用计算架构 用于连接你的程序 有用的系统 - 是 实现对 集群“云计算”的开放源代码软件 基础设施。 EUCALYPTUS的当前接口与亚马逊的 EC2接口兼容,但基础设施 被设计为支持多个 客户端接口。

请注意,根据文档,Eucalypus不仅包括EC2接口的重新实现,还包括S3存储系统。该存储组件称为Walrus。 (http://open.eucalyptus.com/wiki/EucalyptusUserGuide_v1.5.2

+0

我想知道S3(存储系统)而不是EC2(云计算)。 – 2008-09-18 10:50:24

1

Fake S3似乎是S3的上行最新重新实现,专门用于在测试中使用而设计的。

4

我认为moto(https://github.com/spulec/moto)是您的unittests的完美工具。 Moto嘲笑对S3,SQS等的所有访问,并可以使用任何编程语言使用他们的Web服务器。

这是轻而易举的设置,轻量级和快速。

从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) 

花一分钟思考如何你会测试,在过去。现在看你能如何与摩托测试:

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' 
1

我们跑进本地测试我们的基于S3的代码的问题,实际上是实现了一个小型的Java服务器,它模拟了S3对象API。由于它可能对其他人有用,我们设置了一个github回购以及一个小型网站:http://s3ninja.net - 根据MIT许可证提供的所有OpenSource。

它非常小和简单,可以在几分钟内设置。 (作为基于SIRIUS的应用程序,中等服务器上的statup时间不到一秒)。