org.knowhowlab.osgi.testing.assertions
Class BundleAssert

java.lang.Object
  extended by org.knowhowlab.osgi.testing.assertions.OSGiAssert
      extended by org.knowhowlab.osgi.testing.assertions.BundleAssert

public class BundleAssert
extends OSGiAssert

A set of OSGi Bundle specific assertion methods useful for writing tests.

Before use it could be initialized with default BundleContext OSGiAssert.setDefaultBundleContext(org.osgi.framework.BundleContext)

Author:
dmytro.pishchukhin
See Also:
AssertionError, OSGiAssert

Method Summary
static void assertBundleAvailable(long bundleId)
          Asserts that Bundle with bundleId is available in OSGi framework.
static void assertBundleAvailable(String symbolicName)
          Asserts that Bundle with symbolic name is available in OSGi framework.
static void assertBundleAvailable(String message, long bundleId)
          Asserts that Bundle with bundleId is available in OSGi framework.
static void assertBundleAvailable(String message, String symbolicName)
          Asserts that Bundle with symbolic name is available in OSGi framework.
static void assertBundleAvailable(String message, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is available in OSGi framework.
static void assertBundleAvailable(String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is available in OSGi framework.
static void assertBundleEvent(int eventTypeMask, int bundleId, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(int eventTypeMask, int bundleId, long timeout, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleEvent(int eventTypeMask, String symbolicName, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(int eventTypeMask, String symbolicName, long timeout, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleEvent(int eventTypeMask, String symbolicName, long timeout, org.osgi.framework.Version version, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleEvent(int eventTypeMask, String symbolicName, org.osgi.framework.Version version, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(String message, int eventTypeMask, int bundleId, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(String message, int eventTypeMask, int bundleId, long timeout, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleEvent(String message, int eventTypeMask, String symbolicName, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(String message, int eventTypeMask, String symbolicName, long timeout, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleEvent(String message, int eventTypeMask, String symbolicName, org.osgi.framework.Version version, long timeoutInMillis)
          Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis.
static void assertBundleEvent(String message, int eventTypeMask, String symbolicName, org.osgi.framework.Version version, long timeout, TimeUnit timeUnit)
          Asserts that BundleEvent for defined bundle will be fired within given timeout.
static void assertBundleState(int state, long bundleId)
          Asserts that Bundle with bundleId has given state value.
static void assertBundleState(int state, String symbolicName)
          Asserts that Bundle with symbolic name has given state value.
static void assertBundleState(int state, String symbolicName, long timeoutInMillis)
          Asserts that Bundle with symbolic name has given state value.
static void assertBundleState(int stateMask, String symbolicName, long timeout, TimeUnit timeUnit)
          Asserts that Bundle with symbolic name has given stateMask value.
static void assertBundleState(int state, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version has given state value.
static void assertBundleState(int stateMask, String symbolicName, org.osgi.framework.Version version, long timeout, TimeUnit timeUnit)
          Asserts that Bundle with symbolic name and version has given stateMask value.
static void assertBundleState(String message, int state, long bundleId)
          Asserts that Bundle with bundleId has given state value.
static void assertBundleState(String message, int state, String symbolicName)
          Asserts that Bundle with symbolic name has given state value.
static void assertBundleState(String message, int stateMask, String symbolicName, long timeoutInMillis)
          Asserts that Bundle with symbolic name has given stateMask value.
static void assertBundleState(String message, int stateMask, String symbolicName, long timeout, TimeUnit timeUnit)
          Asserts that Bundle with symbolic name has given stateMask value.
static void assertBundleState(String message, int state, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version has given state value.
static void assertBundleState(String message, int stateMask, String symbolicName, org.osgi.framework.Version version, long timeout, TimeUnit timeUnit)
          Asserts that Bundle with symbolic name has given stateMask value.
static void assertBundleUnavailable(long bundleId)
          Asserts that Bundle with bundleId is unavailable in OSGi framework.
static void assertBundleUnavailable(String symbolicName)
          Asserts that Bundle with symbolic name is unavailable in OSGi framework.
static void assertBundleUnavailable(String message, long bundleId)
          Asserts that Bundle with bundleId is unavailable in OSGi framework.
static void assertBundleUnavailable(String message, String symbolicName)
          Asserts that Bundle with symbolic name is unavailable in OSGi framework.
static void assertBundleUnavailable(String message, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is unavailable in OSGi framework.
static void assertBundleUnavailable(String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is unavailable in OSGi framework.
static void assertFragment(long bundleId)
          Asserts that Bundle with bundleId is fragment bundle.
static void assertFragment(String symbolicName)
          Asserts that Bundle with symbolic name is fragment bundle.
static void assertFragment(String message, long bundleId)
          Asserts that Bundle with bundleId is fragment bundle.
static void assertFragment(String message, String symbolicName)
          Asserts that Bundle with symbolic name is fragment bundle.
static void assertFragment(String message, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is fragment bundle.
static void assertFragment(String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is fragment bundle.
static void assertNotFragment(long bundleId)
          Asserts that Bundle with bundleId is not a fragment bundle.
static void assertNotFragment(String symbolicName)
          Asserts that Bundle with symbolic name is not a fragment bundle.
static void assertNotFragment(String message, long bundleId)
          Asserts that Bundle with bundleId is not a fragment bundle.
static void assertNotFragment(String message, String symbolicName)
          Asserts that Bundle with symbolic name is not a fragment bundle.
static void assertNotFragment(String message, String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is not a fragment bundle.
static void assertNotFragment(String symbolicName, org.osgi.framework.Version version)
          Asserts that Bundle with symbolic name and version is not a fragment bundle.
 
Methods inherited from class org.knowhowlab.osgi.testing.assertions.OSGiAssert
getBundleContext, setDefaultBundleContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

assertBundleState

public static void assertBundleState(int state,
                                     long bundleId)
Asserts that Bundle with bundleId has given state value. If it not as expected AssertionError without a message is thrown

Parameters:
state - bundle state value
bundleId - bundle id
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int state,
                                     long bundleId)
Asserts that Bundle with bundleId has given state value. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
state - bundle state value
bundleId - bundle id
Since:
1.0

assertBundleState

public static void assertBundleState(int state,
                                     String symbolicName)
Asserts that Bundle with symbolic name has given state value. If it not as expected AssertionError without a message is thrown

Parameters:
state - bundle state value
symbolicName - symbolic name
Since:
1.0

assertBundleState

public static void assertBundleState(int state,
                                     String symbolicName,
                                     long timeoutInMillis)
Asserts that Bundle with symbolic name has given state value. If it not as expected AssertionError without a message is thrown

Parameters:
state - bundle state value
symbolicName - symbolic name
timeoutInMillis - time interval to wait. If zero, the method will wait indefinitely.
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int stateMask,
                                     String symbolicName,
                                     long timeoutInMillis)
Asserts that Bundle with symbolic name has given stateMask value. If it not as expected AssertionError without a message is thrown

Parameters:
message - message
stateMask - The bit mask of the ORing of the bundle states to be tracked.
symbolicName - symbolic name
timeoutInMillis - time interval to wait. If zero, the method will wait indefinitely.
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int stateMask,
                                     String symbolicName,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that Bundle with symbolic name has given stateMask value. If it not as expected AssertionError without a message is thrown

Parameters:
message - message
stateMask - The bit mask of the ORing of the bundle states to be tracked.
symbolicName - symbolic name
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - timeout time unit
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int state,
                                     String symbolicName)
Asserts that Bundle with symbolic name has given state value. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
state - bundle state value
symbolicName - symbolic name
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int stateMask,
                                     String symbolicName,
                                     org.osgi.framework.Version version,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that Bundle with symbolic name has given stateMask value. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
stateMask - The bit mask of the ORing of the bundle states to be tracked.
symbolicName - symbolic name
version - version
timeout - time interval in milliseconds to wait. If zero, the method will wait indefinitely.
timeUnit - timeout time unit
Since:
1.0

assertBundleState

public static void assertBundleState(int state,
                                     String symbolicName,
                                     org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version has given state value. If it not as expected AssertionError without a message is thrown

Parameters:
state - bundle state value
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleState

public static void assertBundleState(int stateMask,
                                     String symbolicName,
                                     org.osgi.framework.Version version,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that Bundle with symbolic name and version has given stateMask value. If it not as expected AssertionError without a message is thrown

Parameters:
stateMask - The bit mask of the ORing of the bundle states to be tracked.
symbolicName - symbolic name
version - version
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - timeout time unit
Since:
1.0

assertBundleState

public static void assertBundleState(int stateMask,
                                     String symbolicName,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that Bundle with symbolic name has given stateMask value. If it not as expected AssertionError without a message is thrown

Parameters:
stateMask - The bit mask of the ORing of the bundle states to be tracked.
symbolicName - symbolic name
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - timeout time unit
Since:
1.0

assertBundleState

public static void assertBundleState(String message,
                                     int state,
                                     String symbolicName,
                                     org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version has given state value. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
state - bundle state value
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(long bundleId)
Asserts that Bundle with bundleId is available in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
bundleId - bundle id
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(String message,
                                         long bundleId)
Asserts that Bundle with bundleId is available in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
bundleId - bundle id
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(String symbolicName)
Asserts that Bundle with symbolic name is available in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(String message,
                                         String symbolicName)
Asserts that Bundle with symbolic name is available in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(String symbolicName,
                                         org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is available in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleAvailable

public static void assertBundleAvailable(String message,
                                         String symbolicName,
                                         org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is available in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(long bundleId)
Asserts that Bundle with bundleId is unavailable in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
bundleId - bundle id
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(String message,
                                           long bundleId)
Asserts that Bundle with bundleId is unavailable in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
bundleId - bundle id
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(String symbolicName)
Asserts that Bundle with symbolic name is unavailable in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(String message,
                                           String symbolicName)
Asserts that Bundle with symbolic name is unavailable in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(String symbolicName,
                                           org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is unavailable in OSGi framework. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleUnavailable

public static void assertBundleUnavailable(String message,
                                           String symbolicName,
                                           org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is unavailable in OSGi framework. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
version - version
Since:
1.0

assertFragment

public static void assertFragment(long bundleId)
Asserts that Bundle with bundleId is fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
bundleId - bundle id
Since:
1.0

assertFragment

public static void assertFragment(String message,
                                  long bundleId)
Asserts that Bundle with bundleId is fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
bundleId - bundle id
Since:
1.0

assertFragment

public static void assertFragment(String symbolicName)
Asserts that Bundle with symbolic name is fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
Since:
1.0

assertFragment

public static void assertFragment(String message,
                                  String symbolicName)
Asserts that Bundle with symbolic name is fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
Since:
1.0

assertFragment

public static void assertFragment(String symbolicName,
                                  org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
version - version
Since:
1.0

assertFragment

public static void assertFragment(String message,
                                  String symbolicName,
                                  org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
version - version
Since:
1.0

assertNotFragment

public static void assertNotFragment(long bundleId)
Asserts that Bundle with bundleId is not a fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
bundleId - bundle id
Since:
1.0

assertNotFragment

public static void assertNotFragment(String message,
                                     long bundleId)
Asserts that Bundle with bundleId is not a fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
bundleId - bundle id
Since:
1.0

assertNotFragment

public static void assertNotFragment(String symbolicName)
Asserts that Bundle with symbolic name is not a fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
Since:
1.0

assertNotFragment

public static void assertNotFragment(String message,
                                     String symbolicName)
Asserts that Bundle with symbolic name is not a fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
Since:
1.0

assertNotFragment

public static void assertNotFragment(String symbolicName,
                                     org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is not a fragment bundle. If it not as expected AssertionError without a message is thrown

Parameters:
symbolicName - symbolic name
version - version
Since:
1.0

assertNotFragment

public static void assertNotFragment(String message,
                                     String symbolicName,
                                     org.osgi.framework.Version version)
Asserts that Bundle with symbolic name and version is not a fragment bundle. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
symbolicName - symbolic name
version - version
Since:
1.0

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     int bundleId,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
bundleId - bundle id
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     int bundleId,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
bundleId - bundle id
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     int bundleId,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
bundleId - bundle id
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     int bundleId,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
bundleId - bundle id
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     String symbolicName,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     String symbolicName,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     String symbolicName,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     String symbolicName,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     String symbolicName,
                                     org.osgi.framework.Version version,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
version - version
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     String symbolicName,
                                     org.osgi.framework.Version version,
                                     long timeoutInMillis)
Asserts that BundleEvent for defined bundle will be fired within given timeoutInMillis. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
version - version
timeoutInMillis - time interval in millis to wait. If zero, the method will wait indefinitely.
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(int eventTypeMask,
                                     String symbolicName,
                                     long timeout,
                                     org.osgi.framework.Version version,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown

Parameters:
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
version - version
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1

assertBundleEvent

public static void assertBundleEvent(String message,
                                     int eventTypeMask,
                                     String symbolicName,
                                     org.osgi.framework.Version version,
                                     long timeout,
                                     TimeUnit timeUnit)
Asserts that BundleEvent for defined bundle will be fired within given timeout. If it not as expected AssertionError is thrown with the given message

Parameters:
message - message
eventTypeMask - BundleEvent type mask
symbolicName - symbolicName
version - version
timeout - time interval to wait. If zero, the method will wait indefinitely.
timeUnit - time unit for the time interval
Since:
1.1


Copyright © 2013 Know-How Lab. All Rights Reserved.