summaryrefslogtreecommitdiffstats
path: root/docker/storperf-master/storperf/workloads/_base_workload.py
diff options
context:
space:
mode:
Diffstat (limited to 'docker/storperf-master/storperf/workloads/_base_workload.py')
-rw-r--r--docker/storperf-master/storperf/workloads/_base_workload.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/docker/storperf-master/storperf/workloads/_base_workload.py b/docker/storperf-master/storperf/workloads/_base_workload.py
new file mode 100644
index 0000000..936c839
--- /dev/null
+++ b/docker/storperf-master/storperf/workloads/_base_workload.py
@@ -0,0 +1,82 @@
+##############################################################################
+# Copyright (c) 2015 EMC and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import logging
+
+
+class _base_workload(object):
+
+ def __init__(self):
+ self.logger = logging.getLogger(self.__class__.__name__)
+ self.default_filesize = "1G"
+ self.filename = '/dev/vdb'
+ self.options = {
+ 'ioengine': 'libaio',
+ 'direct': '1',
+ 'rw': 'read',
+ 'bs': '64k',
+ 'iodepth': '1',
+ 'numjobs': '1',
+ 'loops': '20',
+ 'output-format': 'json',
+ 'status-interval': '60'
+ }
+ self.invoker = None
+ self.remote_host = None
+ self.id = None
+
+ def execute(self):
+ if self.invoker is None:
+ raise ValueError("No invoker has been set")
+
+ args = []
+ self.invoker.remote_host = self.remote_host
+ self.invoker.callback_id = self.fullname
+
+ if self.filename.startswith("/dev"):
+ self.options['size'] = "100%"
+ self.logger.debug(
+ "Profiling a device, using 100% of " + self.filename)
+ else:
+ self.options['size'] = self.default_filesize
+ self.logger.debug("Profiling a filesystem, using " +
+ self.default_filesize + " file")
+
+ self.options['filename'] = self.filename
+
+ self.setup()
+
+ for key, value in self.options.iteritems():
+ args.append('--' + key + "=" + value)
+
+ self.invoker.execute(args)
+
+ def terminate(self):
+ if self.invoker is not None:
+ self.invoker.terminate()
+
+ def setup(self):
+ pass
+
+ @property
+ def remote_host(self):
+ return str(self._remote_host)
+
+ @remote_host.setter
+ def remote_host(self, value):
+ self._remote_host = value
+
+ @property
+ def fullname(self):
+ return ("%s.%s.queue-depth.%s.block-size.%s.%s" %
+ (str(self.id),
+ self.__class__.__name__,
+ str(self.options['iodepth']),
+ str(self.options['bs']),
+ str(self.remote_host).replace(".", "-")))