Added 'vacation' test case 43/16543/2
authorvitikkan <viktor.tikkanen@nokia.com>
Thu, 7 Jul 2016 11:23:20 +0000 (14:23 +0300)
committerJose Lausuch <jose.lausuch@ericsson.com>
Thu, 7 Jul 2016 12:13:18 +0000 (12:13 +0000)
Running this test case illustrates how Functest code base and
performance tend to grow when trying to catch more and more
bugs in OPNFV environment. The case is not bound to any tier.

Change-Id: Ib3c2f3f3d9d78c1251fbb35e6ea6afd3cf1afbdb
Signed-off-by: vitikkan <viktor.tikkanen@nokia.com>
cli/commands/cli_testcase.py
utils/functest_vacation.py [new file with mode: 0644]

index d8557b9..5d546a2 100644 (file)
@@ -13,6 +13,7 @@ import yaml
 
 import functest.ci.tier_builder as tb
 import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_vacation as vacation
 
 """ global variables """
 with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
@@ -48,7 +49,9 @@ class CliTestcase:
         click.echo(description)
 
     def run(self, testname):
-        if not os.path.isfile(ENV_FILE):
+        if testname == 'vacation':
+            vacation.main()
+        elif not os.path.isfile(ENV_FILE):
             click.echo("Functest environment is not ready. "
                        "Run first 'functest env prepare'")
         else:
diff --git a/utils/functest_vacation.py b/utils/functest_vacation.py
new file mode 100644 (file)
index 0000000..0ba0944
--- /dev/null
@@ -0,0 +1,52 @@
+from os import environ
+from curses import initscr, curs_set, newwin, endwin,\
+    KEY_RIGHT, KEY_LEFT, KEY_DOWN, KEY_UP
+from random import randrange
+
+
+def main():
+    environ["TERM"] = 'Eterm'
+    initscr()
+    curs_set(0)
+    try:
+        win = newwin(16, 60, 0, 0)
+        win.keypad(True)
+        win.nodelay(True)
+        win.border('|', '|', '-', '-', '+', '+', '+', '+')
+        win.addch(4, 44, '@')
+        win.addstr(0, 5, ' Eat all the OPNFV bugs by FunTest! ')
+        win.addstr(15, 7, ' Left,Right,Up,Down: move; other keys: quit ')
+        snake = [[20, 7], [19, 7], [18, 7], [17, 7],
+                 [16, 7], [15, 7], [14, 7], [13, 7]]
+        key = KEY_RIGHT
+        body = '~FUNTEST'
+        ind = 0
+        while key != 27:
+            win.addstr(0, 44, ' Score: '+str(len(snake)-len(body))+' ')
+            win.timeout(140 - 2 * len(snake))
+            getkey = win.getch()
+            key = key if getkey == -1 else getkey
+            snake.insert(
+                0, [snake[0][0]+(key == KEY_RIGHT and 1 or
+                                 key == KEY_LEFT and -1),
+                    snake[0][1]+(key == KEY_DOWN and 1 or
+                                 key == KEY_UP and -1)])
+            win.addch(snake[len(snake)-1][1], snake[len(snake)-1][0], ' ')
+            if win.inch(snake[0][1], snake[0][0]) & 255 == 32:
+                snake.pop()
+            elif win.inch(snake[0][1], snake[0][0]) & 255 == ord('@'):
+                c = [n for n in [[randrange(1, 58, 1), randrange(1, 14, 1)]
+                     for x in range(len(snake))] if n not in snake]
+                win.addch(c == [] and 4 or c[0][1],
+                          c == [] and 44 or c[0][0], '@')
+            else:
+                break
+            ind += 1
+            win.addch(snake[0][1], snake[0][0], body[ind % len(body)])
+    finally:
+        endwin()
+
+    print '\nSnake.PY-26lines by Kris Cieslak (defaultset.blogspot.com).'
+    print 'OPNFV adaptation by Functest dream team.'
+    print 'Thanks for playing, your score: '+str(len(snake)-len(body)-1)+'.'
+    print 'Find and fix more bugs in your real OPNFV setup!\n'