human
Complete this python program:
def make_dataset_integration_testcase(image_name, volume_path, internal_port, insert_data, assert_inserted):
assistant
#Here is the Python code you requested.

    """Create a ``TestCase`` that tests a particular container can
    successfully use Flocker datasets as volumes.
    :param unicode image_name: The image to run.
    :param FilePath volume_path: The path within the container where a
    volume should be mounted.
    :param int internal_port: The port the container listens on.
    :param insert_data: Callable that given test instance, host and port,
    connects using an appropriate client and inserts some
    data. Should return ``Deferred`` that fires on success.
    :param assert_inserted: Callable that given test instance, host and
    port asserts that data was inserted by ``insert_data``. Should
    return ``Deferred`` that fires on success.
    :return: ``TestCase`` subclass.
    """
    class IntegrationTests(AsyncTestCase, ):
        '\n                                Test    that    the    given    application    can    start    and    restart    with    Flocker\n                                datasets    as    volumes.\n                                '
        def _start_container(self, name, dataset_id, external_port, cluster, cleanup=True):
            '\n                                                Start    a    container    with    a    volume.\n\n                                                :param    unicode    name:    The    container    name.\n                                                :param    UUID    dataset_id:    The    dataset    ID.\n                                                :param    cluster:    The    ``Cluster``.\n                                                :param    int    external_port:    External    port    to    expose    on    the    container.\n                                                :param    bool    cleanup:    If    true,    delete    container    when    test    is    over.\n\n                                                :return:    ``Deferred``    that    fires    when    the    container    has    been\n                                                                started.\n                                                '
            app = {u'name': name, u'node_uuid': cluster.nodes[0].uuid, u'image': image_name, u'ports': [{u'internal': internal_port, u'external': external_port}], u'restart_policy': {u'name': u'never'}, u'volumes': [{u'dataset_id': unicode(dataset_id), u'mountpoint': volume_path.path}]}
            created = cluster.create_container(app)
            if cleanup:
                created.addCallback((lambda _: self.addCleanup(cluster.remove_container, name)))
            return created
        @require_cluster(1, require_container_agent=True)
        def test_start(self, cluster):
            '\n                                                The    specified    application    can    be    started   ...