Patchwork oeqa/targetcontrol: make BaseTarget an abstract class

login
register
mail settings
Submitter Stanacar, StefanX
Date Feb. 27, 2014, 3:46 p.m.
Message ID <1393515975-1069-1-git-send-email-stefanx.stanacar@intel.com>
Download mbox | patch
Permalink /patch/67595/
State Accepted
Commit 9744e0fb0adc25d5a2c7c376ebfbf42abbe9e9ad
Headers show

Comments

Stanacar, StefanX - Feb. 27, 2014, 3:46 p.m.
This should make it clear what methods a subclass
needs to redefine.

Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
---
 meta/lib/oeqa/targetcontrol.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Patch

diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 46e5f7f..d8a6ac0 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -12,6 +12,7 @@  import traceback
 from oeqa.utils.sshcontrol import SSHControl
 from oeqa.utils.qemurunner import QemuRunner
 from oeqa.controllers.testtargetloader import TestTargetLoader
+from abc import ABCMeta, abstractmethod
 
 def get_target_controller(d):
     testtarget = d.getVar("TEST_TARGET", True)
@@ -40,6 +41,8 @@  def get_target_controller(d):
 
 class BaseTarget(object):
 
+    __metaclass__ = ABCMeta
+
     def __init__(self, d):
         self.connection = None
         self.ip = None
@@ -48,6 +51,7 @@  class BaseTarget(object):
         self.testdir = d.getVar("TEST_LOG_DIR", True)
         self.pn = d.getVar("PN", True)
 
+    @abstractmethod
     def deploy(self):
 
         self.sshlog = os.path.join(self.testdir, "ssh_target_log.%s" % self.datetime)
@@ -57,6 +61,18 @@  class BaseTarget(object):
         os.symlink(self.sshlog, sshloglink)
         bb.note("SSH log file: %s" %  self.sshlog)
 
+    @abstractmethod
+    def start(self, params=None):
+        pass
+
+    @abstractmethod
+    def stop(self):
+        pass
+
+    @abstractmethod
+    def restart(self, params=None):
+        pass
+
     def run(self, cmd, timeout=None):
         return self.connection.run(cmd, timeout)