Przeglądaj źródła

Added dev goals and testing philosophy. Fixed some typos.

nuwan_ag 10 lat temu
rodzic
commit
b8d5e569d9
2 zmienionych plików z 45 dodań i 2 usunięć
  1. 44 1
      README.rst
  2. 1 1
      docs/index.rst

+ 44 - 1
README.rst

@@ -2,7 +2,7 @@ cloudbridge
 ===========
 ===========
 
 
 cloudbridge provides a layer of abstraction over different cloud providers.
 cloudbridge provides a layer of abstraction over different cloud providers.
-It's a straightfoward implementation of the `bridge pattern`_. It is currently
+It's a straightforward implementation of the `bridge pattern`_. It is currently
 under development and is in a Pre-Alpha state.
 under development and is in a Pre-Alpha state.
 
 
 .. image:: https://codeclimate.com/github/gvlproject/cloudbridge/badges/gpa.svg
 .. image:: https://codeclimate.com/github/gvlproject/cloudbridge/badges/gpa.svg
@@ -46,6 +46,33 @@ Documentation
 ~~~~~~~~~~~~~
 ~~~~~~~~~~~~~
 Documentation can be found at https://cloudbridge.readthedocs.org.
 Documentation can be found at https://cloudbridge.readthedocs.org.
 
 
+
+Design Goals
+~~~~~~~~~~~~
+
+1. Create a cloud abstraction layer which minimises or eliminates the
+need for cloud specific special casing.
+i.e. Not require clients to write if EC2 do x else if OPENSTACK do y.
+
+2. Have a suite of conformance tests which are comprehensive enough that goal 1
+can be achieved. This would also mean that clients need not manually test against
+each provider to make sure their application is compatible.
+
+3. Opt for a minimum set of features that a cloud provider will support,
+instead of  a lowest common denominator approach. This means that reasonably
+mature clouds like Amazon and Openstack are used as the benchmark against which
+functionality & features are determined. Therefore, there is a definite
+expectation that the cloud infrastructure will support a compute service with
+support for images and snapshots and various machine sizes. The cloud
+infrastructure will very likely support block storage, although this is
+currently optional. It may optionally support object storage
+
+4. Make the cloudbridge layer as thin as possible without compromising goal 1.
+By wrapping the cloud provider's native SDK and doing the minimal work necessary
+to adapt the interface, we can achieve greater development speed and reliability
+since the native provider SDK is most likely to have both properties.
+
+
 Contributing
 Contributing
 ~~~~~~~~~~~~
 ~~~~~~~~~~~~
 Community contributions for any part of the project are welcome. If you have
 Community contributions for any part of the project are welcome. If you have
@@ -85,6 +112,22 @@ simulate AWS resources. It is used by default when running the test suite. To
 disable it, set the following environment variable:
 disable it, set the following environment variable:
 ``export CB_USE_MOCK_DRIVERS=No``.
 ``export CB_USE_MOCK_DRIVERS=No``.
 
 
+Testing philosophy
+~~~~~~~~~~~~~~~~~~
+Our testing goals are to:
+* Write one set of tests that all provider implementations must pass.
+* Make that set of tests a 'conformance' test suite which validates that each
+implementation correctly implements the cloudbridge specification.
+* Make the test suite comprehensive enough that a provider which passes all the
+tests can be used safely by an application with no additional testing. In other
+words, the cloudbridge specification and accompanying test suite must be
+comprehensive enough that no provider specific workarounds, code or testing is
+required.
+* For development, mock providers may be used to speed up the feedback cycle,
+but providers must also pass the full suite of tests when run against actual
+cloud infrastructure to ensure that we are not testing against an idealised
+or imagined environment.
+* Aim for 100% code coverage.
 
 
 .. _`bridge pattern`: https://en.wikipedia.org/wiki/Bridge_pattern
 .. _`bridge pattern`: https://en.wikipedia.org/wiki/Bridge_pattern
 .. _`tox`: https://tox.readthedocs.org/en/latest/
 .. _`tox`: https://tox.readthedocs.org/en/latest/

+ 1 - 1
docs/index.rst

@@ -7,7 +7,7 @@ Welcome to cloudbridge's documentation!
 =======================================
 =======================================
 
 
 cloudbridge provides a layer of abstraction over different cloud providers.
 cloudbridge provides a layer of abstraction over different cloud providers.
-It's a straightfoward implementation of the `bridge pattern`_.
+It's a straightforward implementation of the `bridge pattern`_.
 
 
 Usage example
 Usage example
 ~~~~~~~~~~~~~
 ~~~~~~~~~~~~~