usr/src/lib/install_engine/test/test_engine.py
author Ginnie Wray<virginia.wray@oracle.com>
Tue, 19 Jun 2012 12:18:37 -0600
changeset 1717 10cb4d15a248
parent 1350 025c6311d0d9
permissions -rw-r--r--
7066254 Problem with install/logging 7170155 DC leaves log files in /var/tmp/install
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python2.6
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     2
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     3
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     4
# CDDL HEADER START
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     5
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     6
# The contents of this file are subject to the terms of the
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     7
# Common Development and Distribution License (the "License").
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     8
# You may not use this file except in compliance with the License.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
     9
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    10
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    11
# or http://www.opensolaris.org/os/licensing.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    12
# See the License for the specific language governing permissions
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    13
# and limitations under the License.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    14
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    15
# When distributing Covered Code, include this CDDL HEADER in each
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    16
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    17
# If applicable, add the following below this CDDL HEADER, with the
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    18
# fields enclosed by brackets "[]" replaced with your own identifying
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    19
# information: Portions Copyright [yyyy] [name of copyright owner]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    20
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    21
# CDDL HEADER END
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    22
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    23
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    24
#
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    25
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    26
#
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    27
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    28
'''Some unit tests to cover engine functionality'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    29
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    30
import logging
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    31
import os
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    32
import sys
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    33
import shutil
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    34
import tempfile
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    35
import threading
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    36
import unittest
913
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
    37
import warnings
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    38
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    39
from itertools import izip
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    40
from logging import ERROR, DEBUG
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    41
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    42
import solaris_install.engine as engine
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    43
import solaris_install.engine.checkpoint_data as checkpoint_data
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    44
import osol_install.errsvc as errsvc
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    45
import osol_install.liberrsvc as liberrsvc
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    46
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    47
from empty_checkpoint import EmptyCheckpoint
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    48
from solaris_install.engine.test.engine_test_utils import reset_engine, \
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    49
    get_new_engine_instance
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    50
from solaris_install.data_object import DataObject
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    51
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    52
_THIS_DIR = os.path.dirname(os.path.abspath(__file__))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    53
sys.path.append(_THIS_DIR)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    54
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    55
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    56
class MockDataset(object):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    57
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    58
    ''' Fake Dataset object so the real ZFS dataset object does
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    59
        not need to be used for testing
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    60
    '''
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    61
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    62
    def __init__(self, path):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    63
        self.exists = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    64
        self.mountpoint = path
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    65
        self.snapped = (None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    66
        self.snapshot_list = []
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    67
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    68
    def snapshot(self, name, overwrite=False):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    69
        self.snapped = (name, overwrite)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    70
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    71
    def snapname(self, name):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    72
        return self.mountpoint + '@' + name
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    73
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    74
    def rollback(self, name, recursive=True):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    75
        pass
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    76
1073
7ff3ee2fcf57 7036435 Additional install unit tests failures after TI/TD CUD putback
Drew Fisher <drew.fisher@oracle.com>
parents: 913
diff changeset
    77
    def get(self, property):
7ff3ee2fcf57 7036435 Additional install unit tests failures after TI/TD CUD putback
Drew Fisher <drew.fisher@oracle.com>
parents: 913
diff changeset
    78
        return getattr(self, property)
7ff3ee2fcf57 7036435 Additional install unit tests failures after TI/TD CUD putback
Drew Fisher <drew.fisher@oracle.com>
parents: 913
diff changeset
    79
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    80
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    81
class MockDOC(object):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    82
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    83
    ''' Fake DOC object so the real DataObjectCache object we do not rely
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    84
        on the actual DataObjectCache class for testing.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    85
    '''
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    86
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    87
    def take_snapshot(self, dummy):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    88
        self.snapshotted = dummy
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    89
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    90
    def insert_children(self, dummy):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    91
        pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    92
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    93
    @property
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    94
    def persistent(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    95
        return self
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
    96
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    97
    def get_first_child(self, name=None):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    98
        return self
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
    99
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   100
    def clear(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   101
        pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   102
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   103
    def load_from_snapshot(self, filename):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   104
        self.loaded_from = filename
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   105
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   106
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   107
class MockCheckpointRegData(DataObject):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   108
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   109
    ''' Fake CheckpointRegData object so we do not rely on the actual
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   110
        CheckpointRegData object for testing
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   111
    '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   112
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   113
    def __init__(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   114
        DataObject.__init__(self, "MokeCheckpointRegData")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   115
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   116
    def to_xml(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   117
        return None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   118
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   119
    def from_xml(cls, xml_node):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   120
        return None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   121
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   122
    def can_handle(cls, xml_node):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   123
        return False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   124
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   125
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   126
class MockCheckpointData(object):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   127
    ''' Fake CheckpointData object so we do not rely on the actual
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   128
        CheckpointData object for testing
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   129
    '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   130
    def __init__(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   131
        self.cp_info = MockCheckpointRegData()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   132
        self.name = "MockCheckpointData"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   133
        self.prog_reported = 0
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   134
        self.prog_est_ratio = 0
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   135
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   136
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   137
class EngineTest(unittest.TestCase):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   138
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   139
    ''' Tests that validates the interfaces in the install engine code.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   140
        All tests here do not require a user to be
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   141
        root to execute.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   142
    '''
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   143
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   144
    def setUp(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   145
        self.callback_results = (None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   146
        self.callback_executed = threading.Event()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   147
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   148
        self.engine = get_new_engine_instance()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   149
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   150
    def tearDown(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   151
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   152
        # Force spawning of fresh singleton for each test.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   153
        reset_engine(self.engine)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   154
        self.engine = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   155
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   156
        self.callback_results = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   157
        self.callback_executed = None
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   158
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   159
    def _exec_cp_callback(self, status, errsvc):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   160
        ''' Callback function for none-block execute_checkpoints() tests '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   161
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   162
        self.callback_results = (status, errsvc)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   163
        self.callback_executed.set()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   164
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   165
    def create_fake_cache_snapshots(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   166
        ''' Create a few fake DOC snapshots in /tmp '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   167
        cp_names = ["cp_one", "cp_two", "cp_three", "cp_four"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   168
        self.full_cp_names = []
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   169
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   170
        # create a tmp directory for it
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   171
        self.cache_dir_name = ("/tmp/list_doc_snapshot_test_%s") % os.getpid()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   172
        os.mkdir(self.cache_dir_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   173
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   174
        for cp in cp_names:
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   175
            file_name = os.path.join(self.cache_dir_name,
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   176
                           engine.InstallEngine.CACHE_FILE_NAME_PREFIX + cp)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   177
            shutil.copyfile("/etc/hosts", file_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   178
            self.full_cp_names.append(file_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   179
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   180
    def destroy_fake_cache_snapshots(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   181
        ''' Destroyes the fake DOC snapshots in /tmp used for testing '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   182
        shutil.rmtree(self.cache_dir_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   183
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   184
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   185
class SimpleEngineTests(EngineTest):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   186
    '''Tests the less complicated engine functionality'''
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   187
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   188
    def test_engine_is_singleton(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   189
        engine.InstallEngine._instance = None
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   190
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   191
        self.assertRaises(engine.SingletonError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   192
                          engine.InstallEngine.get_instance)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   193
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   194
        log_tmp_dir = tempfile.mkdtemp(dir="/tmp", prefix="logging_")
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   195
        log_tmp_file = log_tmp_dir + "/install_log"
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   196
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   197
        install_engine = engine.InstallEngine(log_tmp_file)
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   198
        self.assertTrue(isinstance(install_engine, engine.InstallEngine))
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   199
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   200
        self.assertRaises(engine.SingletonError, engine.InstallEngine,
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   201
                          "secondlog")
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   202
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   203
        engine_instance = engine.InstallEngine.get_instance()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   204
        self.assertTrue(install_engine is engine_instance)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   205
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   206
        try:
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   207
            shutil.rmtree(os.path.dirname(log_tmp_file))
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   208
        except:
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   209
            pass
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   210
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   211
    def test_check_callback_None(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   212
        '''Assert InstallEngine._check_callback accepts None '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   213
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   214
            self.engine._check_callback(None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   215
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   216
            self.fail("Engine did not accept 'None' for callback")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   217
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   218
    def test_check_callback_varargs(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   219
        '''Assert InstallEngine._check_callback accepts a vararg function'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   220
        def vararg_func(*args):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   221
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   222
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   223
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   224
            self.engine._check_callback(vararg_func)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   225
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   226
            self.fail("Engine did not accept function with *args param")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   227
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   228
    def test_check_callback_two_args(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   229
        '''Assert InstallEngine._check_callback accepts a two argument function'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   230
        def arg_func(arg1, arg2):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   231
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   232
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   233
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   234
            self.engine._check_callback(arg_func)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   235
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   236
            self.fail("Engine did not accept function with exactly two args")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   237
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   238
    def test_check_callback_under_two_args(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   239
        '''Asserts InstallEngine._check_callback fails on a single argument function'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   240
        def arg_func(arg1):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   241
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   242
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   243
        self.assertRaises(TypeError, self.engine._check_callback, arg_func)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   244
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   245
    def test_check_callback_over_two_required_args(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   246
        '''Asserts InstallEngine._check_callback fails if 3 or more args are required'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   247
        def arg_func(arg1, arg2, arg3):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   248
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   249
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   250
        self.assertRaises(TypeError, self.engine._check_callback, arg_func)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   251
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   252
    def test_check_callback_with_kwargs(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   253
        '''Asserts InstallEngine._check_callback handles functions with keyword args'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   254
        def kwarg_func_all(arg1=None, arg2=None, arg3=None):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   255
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   256
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   257
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   258
            self.engine._check_callback(kwarg_func_all)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   259
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   260
            self.fail("Engine did not accept function with kwargs for all"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   261
                      "arguments")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   262
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   263
    def test_check_callback_2_arg_optional_kwarg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   264
        '''Asserts InstallEngine._check_callback handles a function with an optional keyword argument'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   265
        def optional_kwarg(arg1, arg2, arg3=None):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   266
            pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   267
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   268
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   269
            self.engine._check_callback(optional_kwarg)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   270
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   271
            self.fail("Engine did not accept function with optional kwarg")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   272
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   273
    def test_check_callback_bound_class_method(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   274
        '''Asserts InstallEngine._check_callback handles bound class methods'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   275
        class DummyClass(object):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   276
            def callback(self, status, errsvc):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   277
                pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   278
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   279
        instance = DummyClass()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   280
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   281
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   282
            self.engine._check_callback(instance.callback)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   283
        except TypeError:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   284
            self.fail("Engine did not accept bound class method")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   285
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   286
    def test_check_callback_unbound_class_method(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   287
        '''Asserts InstallEngine._check_callback rejects unbound class methods.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   288
        (Unbound methods require a class instance as the first argument)'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   289
        class DummyClass(object):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   290
            def callback(self, status, errsvc):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   291
                pass
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   292
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   293
        self.assertRaises(TypeError, self.engine._check_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   294
                          DummyClass.callback)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   295
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   296
    def test_snapshot_tmp_no_dataset(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   297
        self.engine._dataset = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   298
        self.engine.data_object_cache = MockDOC()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   299
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   300
        cp_data = MockCheckpointData()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   301
1290
cfaa7349f221 7004000 Install engine enhancement to save original args/kwargs list before calling checkpoint's execute
Karen Tung <Karen.Tung@oracle.com>
parents: 1073
diff changeset
   302
        self.engine.snapshot(cp_data=cp_data)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   303
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   304
        self.assertEqual(cp_data.zfs_snap, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   305
        self.assertEqual(self.engine.doc.snapshotted,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   306
                         cp_data.data_cache_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   307
                         "DOC path for Checkpoint not set")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   308
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   309
    def test_snapshot_tmp_dataset_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   310
        ds = MockDataset("mock")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   311
        self.engine._dataset = ds
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   312
        self.engine.dataset.exists = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   313
        self.engine.data_object_cache = MockDOC()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   314
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   315
        cp_data = MockCheckpointData()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   316
1290
cfaa7349f221 7004000 Install engine enhancement to save original args/kwargs list before calling checkpoint's execute
Karen Tung <Karen.Tung@oracle.com>
parents: 1073
diff changeset
   317
        self.engine.snapshot(cp_data=cp_data)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   318
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   319
        self.assertEqual(cp_data.zfs_snap, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   320
        self.assertEqual(self.engine.doc.snapshotted,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   321
                         cp_data.data_cache_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   322
                         "DOC path for Checkpoint not set")
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   323
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   324
    def test_snapshot_zfs_dataset_exists(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   325
        ds = MockDataset("mock")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   326
        self.engine._dataset = ds
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   327
        self.engine.dataset.exists = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   328
        self.engine.data_object_cache = MockDOC()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   329
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   330
        cp_data = MockCheckpointData()
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   331
1290
cfaa7349f221 7004000 Install engine enhancement to save original args/kwargs list before calling checkpoint's execute
Karen Tung <Karen.Tung@oracle.com>
parents: 1073
diff changeset
   332
        self.engine.snapshot(cp_data=cp_data)
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   333
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   334
        self.assertEqual(cp_data.zfs_snap, ds.snapped[0])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   335
        self.assertEqual(self.engine.doc.snapshotted,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   336
                         cp_data.data_cache_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   337
                         "DOC path for Checkpoint not set")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   338
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   339
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   340
class EngineCheckpointsBase(EngineTest):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   341
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   342
    def setUp(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   343
        EngineTest.setUp(self)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   344
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   345
        if _THIS_DIR == ".":
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   346
            self.cp_data_args = ("empty_checkpoint", "EmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   347
            self.failed_cp_data_args = ("empty_checkpoint",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   348
                                        "FailureEmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   349
        else:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   350
            self.cp_data_args = (_THIS_DIR + "/empty_checkpoint",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   351
                                 "EmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   352
            self.failed_cp_data_args = (_THIS_DIR + "/empty_checkpoint",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   353
                                        "FailureEmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   354
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   355
        if _THIS_DIR.startswith("/"):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   356
            self.expected_mod_name = "empty_checkpoint"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   357
            self.expected_mod_path = _THIS_DIR
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   358
        else:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   359
            self.expected_mod_name = self.cp_data_args[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   360
            self.expected_mod_path = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   361
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   362
        self.name_list = ["one", "two", "three", "four", "five"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   363
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   364
        # Squelch the logging during checkpoint registration
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   365
        # (it clutters the test output)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   366
        level = engine.LOGGER.level
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   367
        engine.LOGGER.level = 100
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   368
        for name in self.name_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   369
            self.engine.register_checkpoint(name, *self.cp_data_args)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   370
        engine.LOGGER.level = level
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   371
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   372
    def tearDown(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   373
        EngineTest.tearDown(self)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   374
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   375
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   376
class EngineCheckpointsTest(EngineCheckpointsBase):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   377
    '''More complicated InstallEngine tests requiring DOC, checkpoints, etc.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   378
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   379
    def test_register_checkpoint(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   380
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   381
        self.assertEquals(len(self.name_list), len(self.engine._checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   382
        for cp_data in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   383
            self.assertEquals(cp_data.cp_info.mod_name, self.expected_mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   384
                              "Module name: Expected '%s', got '%s'" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   385
                              (self.expected_mod_name, cp_data.cp_info.mod_name))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   386
            self.assertEquals(cp_data.cp_info.module_path, self.expected_mod_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   387
                              "Module path: Expected '%s', got '%s'" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   388
                              (self.expected_mod_path, cp_data.cp_info.module_path))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   389
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   390
    def test_register_duplicate_checkpoint(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   391
        '''Assert cannot register two checkpoints with the same name'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   392
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   393
                          self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   394
                          self.name_list[1], *self.cp_data_args)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   395
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   396
    def test_get_full_checkpoint_list(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   397
        '''InstallEngine.get_exec_list - Default args (full list)'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   398
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   399
        exec_list = self.engine.get_exec_list()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   400
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   401
        self.assertEquals(len(self.name_list), len(exec_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   402
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   403
        for exec_cp, cp_name in zip(exec_list, self.name_list):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   404
            self.assertEquals(exec_cp.name, cp_name, "Exec list returned "
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   405
                            "checkpoints out of order")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   406
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   407
    def test_get_cp_list_pause_before(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   408
        '''InstallEngine.get_exec_list - pause_before arg works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   409
        stop_at = 2
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   410
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   411
        exec_list = self.engine.get_exec_list(pause_before=self.name_list[stop_at])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   412
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   413
        self.assertEquals(len(self.name_list[:stop_at]), len(exec_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   414
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   415
        for exec_cp, cp_name in zip(exec_list, self.name_list):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   416
            self.assertEquals(exec_cp.name, cp_name, "Exec list returned "
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   417
                            "checkpoints out of order")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   418
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   419
    def test_get_cp_list_resume_from(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   420
        '''InstallEngine.get_exec_list - resume_from arg works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   421
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   422
        for cp_data in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   423
            cp_data.completed = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   424
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   425
        resume_from = 1
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   426
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   427
        exec_list = self.engine.get_exec_list(start_from=self.name_list[resume_from])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   428
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   429
        self.assertEquals(len(self.name_list[resume_from:]), len(exec_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   430
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   431
        for exec_cp, cp_name in zip(exec_list, self.name_list[resume_from:]):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   432
            self.assertEquals(exec_cp.name, cp_name, "Exec list returned "
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   433
                            "checkpoints out of order")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   434
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   435
    def test_get_cp_list_pause_before_resume(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   436
        '''InstallEngine.get_exec_list - Error when pause_before cp is before the start_from cp in sequence'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   437
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   438
        for cp_data in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   439
            cp_data.completed = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   440
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   441
        resume_from = 2
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   442
        pause_before = 1
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   443
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   444
        self.assertRaises(engine.UsageError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   445
                          self.engine.get_exec_list, start_from=self.name_list[resume_from],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   446
                          pause_before=self.name_list[pause_before])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   447
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   448
    def test_get_cp_list_resume_prev_cp_not_complete(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   449
        '''InstallEngine.get_exec_list - Error when prior cp's not complete'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   450
        resume_from = 1
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   451
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   452
        self.assertRaises(engine.UsageError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   453
                          self.engine.get_exec_list, start_from=self.name_list[resume_from])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   454
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   455
    def test_resume_from_last_complete(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   456
        '''InstallEngine.get_exec_list - Verify correct exec list is returned when some checkpoints are completed '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   457
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   458
        self.engine._checkpoints[0].completed = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   459
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   460
        first_inc = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   461
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   462
        self.assertTrue(first_inc is self.engine._checkpoints[1])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   463
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   464
        exec_list = self.engine.get_exec_list(start_from=None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   465
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   466
        self.assertFalse(self.engine._checkpoints[0] in exec_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   467
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   468
    def test_resume_from_last_none_complete(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   469
        '''InstallEngine.get_exec_list - Verify when none of the checkpoints are complete'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   470
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   471
        first_inc = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   472
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   473
        self.assertTrue(first_inc is self.engine._checkpoints[0])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   474
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   475
        exec_list = self.engine.get_exec_list()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   476
        self.assertEquals(len(self.name_list), len(exec_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   477
        for exec_cp, cp_name in zip(exec_list, self.name_list):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   478
            self.assertEquals(exec_cp.name, cp_name, "Exec list returned "
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   479
                              "checkpoints out of order")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   480
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   481
    def test_resume_from_last_all_complete(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   482
        '''InstallEngine.get_exec_list - Verify nothing is returned when all cp's complete'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   483
        for cp_data in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   484
            cp_data.completed = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   485
        first_inc = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   486
        self.assertTrue(first_inc is None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   487
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   488
        exec_list = self.engine.get_exec_list()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   489
        self.assertEquals(0, len(exec_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   490
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   491
    def test_get_cp_list_resume_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   492
        '''InstallEngine.get_exec_list - Verify UsageError on nonexistent start_from cp'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   493
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   494
        self.assertRaises(engine.UsageError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   495
                          self.engine.get_exec_list, start_from="NOEXIST")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   496
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   497
    def test_get_cp_list_pause_before_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   498
        '''InstallEngine.get_exec_list - Verify UsageError on nonexistent pause_before cp'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   499
        self.assertRaises(engine.UsageError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   500
                          self.engine.get_exec_list, pause_before="NOEXIST")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   501
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   502
    def test_get_cache_filename_no_dataset(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   503
        self.engine.dataset = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   504
        path = self.engine.get_cache_filename("cp")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   505
        self.assertEquals(path, os.path.join(self.engine._tmp_cache_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   506
                                             ".data_cache.cp"))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   507
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   508
    def test_get_cache_filename_dataset(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   509
        self.engine._tmp_cache_path = "/a/b/c"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   510
        dataset = MockDataset(self.engine._tmp_cache_path)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   511
        self.engine._dataset = dataset
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   512
        path = self.engine.get_cache_filename("cp")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   513
        self.assertEquals(path, os.path.join(dataset.mountpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   514
                                             ".data_cache.cp"))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   515
        self.engine._tmp_cache_path = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   516
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   517
    def test_get_cache_filename_dataset_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   518
        self.engine._tmp_cache_path = "/x/y/z"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   519
        dataset = MockDataset(self.engine._tmp_cache_path)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   520
        dataset.exists = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   521
        dataset.mountpoint = "/a/b/c"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   522
        self.engine._dataset = dataset
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   523
        path = self.engine.get_cache_filename("cp")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   524
        self.assertNotEquals(path, os.path.join(dataset.mountpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   525
                                                ".data_cache.cp"))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   526
        expected = os.path.join(self.engine._tmp_cache_path, ".data_cache.cp")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   527
        self.assertEquals(path, expected)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   528
        self.engine._tmp_cache_path = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   529
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   530
    def test_rollback_in_process_no_zfs(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   531
        '''Assert in process rollbacks w/o ZFS function'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   532
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   533
        cp.completed = True
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   534
        cp.data_cache_path = "/dev/null"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   535
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   536
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   537
        self.engine._rollback(cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   538
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   539
        for cp in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   540
            self.assertFalse(cp.completed)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   541
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   542
    def test_out_process_rollback(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   543
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   544
        cp.completed = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   545
        cp_doc = self.engine.get_cache_filename(cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   546
        with open(cp_doc, "w") as tmp_file:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   547
            tmp_file.write("")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   548
        ds = MockDataset(os.path.dirname(cp_doc))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   549
        self.engine._dataset = ds
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   550
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   551
        ds.snapshot_list.append(ds.mountpoint + "@.step_" + cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   552
        self.engine._rollback(cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   553
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   554
        for cp in self.engine._checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   555
            self.assertFalse(cp.completed)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   556
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   557
    def test_in_process_rollback_cache_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   558
        '''Test that rollbacks fail when the cache doesn't exist'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   559
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   560
        cp.completed = True
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   561
        cp.data_cache_path = os.tempnam()  # Guaranteed to not exist yet
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   562
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   563
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   564
        self.assertRaises(engine.NoCacheError, self.engine._rollback, cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   565
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   566
    def test_out_process_rollback_cache_no_exist(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   567
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   568
        cp.completed = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   569
        ds = MockDataset(os.tempnam())
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   570
        self.engine._dataset = ds
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   571
        ds.snapshot_list.append(ds.mountpoint + "@.step_" + cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   572
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   573
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   574
        self.assertRaises(engine.NoCacheError, self.engine._rollback, cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   575
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   576
    def test_out_process_rollback_no_dataset(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   577
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   578
        cp.completed = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   579
        self.engine._dataset = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   580
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   581
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   582
        self.assertRaises(engine.RollbackError, self.engine._rollback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   583
                          cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   584
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   585
    def test_out_process_rollback_no_snapshot(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   586
        cp = self.engine._checkpoints[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   587
        cp.completed = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   588
        self.engine._dataset = MockDataset(os.tempnam())
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   589
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   590
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   591
        self.assertRaises(engine.RollbackError, self.engine._rollback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   592
                          cp.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   593
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   594
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   595
class EngineExecuteTests(EngineCheckpointsBase):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   596
    '''Test InstallEngine.execute_checkpoints(...) scenarios'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   597
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   598
    def setUp(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   599
        EngineCheckpointsBase.setUp(self)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   600
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   601
        errsvc.clear_error_list()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   602
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   603
    def check_expected_failures(self, expected_failure, status,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   604
                                failed_checkpoints):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   605
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   606
        self.assertEquals(status, self.engine.EXEC_FAILED)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   607
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   608
        self.assertEqual(len(expected_failure), len(failed_checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   609
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   610
        for (exp_name, failed_name) in (izip(expected_failure,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   611
                                             failed_checkpoints)):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   612
            self.assertEqual(exp_name, failed_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   613
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   614
        for failed_name in failed_checkpoints:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   615
            err_data_list = errsvc.get_errors_by_mod_id(failed_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   616
            self.assertEqual(1, len(err_data_list))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   617
            err_data = err_data_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   618
            self.assertTrue(isinstance(err_data.error_data[liberrsvc.ES_DATA_EXCEPTION], RuntimeError))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   619
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   620
    def test_execute_checkpoints_basic(self):
1350
025c6311d0d9 7071386 Improve progress reporting for text installer and GUI installer
Karen Tung <Karen.Tung@oracle.com>
parents: 1290
diff changeset
   621
        '''Uses InstallEngine._execute_checkpoints to run a list of checkpoints'''
025c6311d0d9 7071386 Improve progress reporting for text installer and GUI installer
Karen Tung <Karen.Tung@oracle.com>
parents: 1290
diff changeset
   622
        self.engine._execute_checkpoints(self.engine._checkpoints, True,
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   623
                                         self._exec_cp_callback)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   624
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   625
        status, failed_checkpoints = self.callback_results
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   626
        self.assertEqual(status, engine.InstallEngine.EXEC_SUCCESS,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   627
                         "Execution reported non-success")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   628
        # failed_checkpoints should be None or an empty list,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   629
        # which evaluate to False in a boolean context
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   630
        self.assertFalse(failed_checkpoints,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   631
                         "Execution call encountered errors")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   632
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   633
    def test_blocking_execute(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   634
        '''Run InstallEngine.execute_checkpoints in a blocking fashion (all cp's run)'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   635
        status, failed_checkpoints = self.engine.execute_checkpoints(dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   636
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   637
        self.assertEquals(status, self.engine.EXEC_SUCCESS)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   638
        self.assertEqual(0, len(failed_checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   639
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   640
        # All checkpoints should be completed
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   641
        self.assertEqual(self.engine.get_first_incomplete(), None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   642
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   643
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   644
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   645
    def test_non_blocking_execute(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   646
        '''Run InstallEngine.execute_checkpoints in a non-blocking fashion (all cp's run)'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   647
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   648
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   649
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   650
        # Empty checkpoints shouldn't take long - if they do, something's wrong
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   651
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   652
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   653
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   654
        self.engine.checkpoint_thread.join(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   655
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   656
        self.assertEquals(self.callback_results[0], self.engine.EXEC_SUCCESS,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   657
                          "Engine returned non-success")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   658
        self.assertEqual(0, len(self.callback_results[1]))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   659
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   660
        # All checkpoints should be completed
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   661
        self.assertTrue(self.engine.get_first_incomplete() is None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   662
                        "Not all checkpoints completed!")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   663
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   664
        self.assertFalse(self.engine.checkpoint_thread.is_alive(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   665
                         "Checkpoint thread still running")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   666
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   667
    def test_in_process_continue(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   668
        '''Run a few checkpoints, then run the rest'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   669
        pause_before = self.name_list[2]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   670
        status, failed_checkpoints = self.engine.execute_checkpoints(
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   671
                                         pause_before=pause_before,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   672
                                         dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   673
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   674
        self.assertEquals(status, self.engine.EXEC_SUCCESS)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   675
        self.assertEqual(0, len(failed_checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   676
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   677
        # First incomplete checkpoint should be 'pause_before'
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   678
        self.assertEquals(self.engine.get_first_incomplete().name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   679
                          pause_before,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   680
                          "Engine didn't pause at correct checkpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   681
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   682
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   683
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   684
        status, failed_checkpoints = self.engine.execute_checkpoints(
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   685
                                         start_from=pause_before,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   686
                                         dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   687
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   688
        self.assertEquals(status, self.engine.EXEC_SUCCESS,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   689
                          "Engine returned non-success")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   690
        self.assertEqual(0, len(failed_checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   691
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   692
        # All checkpoints should be completed now
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   693
        self.assertTrue(self.engine.get_first_incomplete() is None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   694
                        "Not all checkpoints completed")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   695
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   696
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   697
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   698
    def test_blocking_cp_init_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   699
        '''Failed to initalize a checkpoint in InstallEngine.execute_checkpoints, blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   700
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   701
        # Add the checkpoint that will fail to beginning of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   702
        failed_chkpt_name = "fail_init_1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   703
        self.engine.register_checkpoint(failed_chkpt_name, "empty_checkpoint",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   704
                                        "InitFailureEmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   705
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   706
        status, failed_checkpoints = self.engine.execute_checkpoints(
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   707
                                                                   dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   708
        self.assertEquals(status, self.engine.CP_INIT_FAILED)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   709
        self.assertEqual(len(failed_checkpoints), 1)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   710
        self.assertEqual(failed_checkpoints[0], failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   711
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   712
        # Make sure the execute thread is not created
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   713
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   714
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   715
    def test_non_blocking_cp_init_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   716
        '''Failed to inistalize a checkpoint in InstallEngine.execute_checkpoints non-blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   717
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   718
        # Add the checkpoint that will fail to beginning of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   719
        failed_chkpt_name = "fail_init_1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   720
        self.engine.register_checkpoint(failed_chkpt_name, "empty_checkpoint",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   721
                                        "InitFailureEmptyCheckpoint")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   722
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   723
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   724
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   725
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   726
        # Empty checkpoints shouldn't take long - if they do, something's wrong
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   727
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   728
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   729
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   730
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   731
        self.assertEquals(self.callback_results[0], self.engine.CP_INIT_FAILED)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   732
        self.assertEqual(len(self.callback_results[1]), 1)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   733
        self.assertEqual((self.callback_results[1])[0], failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   734
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   735
    def test_blocking_execute_first_cp_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   736
        '''First checkpoint failed in InstallEngine.execute_checkpoints, blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   737
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   738
        # Add the checkpoint that will fail to beginning of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   739
        failed_chkpt_name = "fail1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   740
        self.engine.register_checkpoint(failed_chkpt_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   741
                                        *self.failed_cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   742
                                        insert_before="one")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   743
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   744
        status, failed_checkpoints = self.engine.execute_checkpoints(
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   745
                                                                   dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   746
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   747
        self.check_expected_failures([failed_chkpt_name], status,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   748
                                     failed_checkpoints)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   749
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   750
        # Make sure the first incomplete checkpoint is the failed checkpoint.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   751
        cp = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   752
        self.assertEqual(cp.name, failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   753
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   754
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   755
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   756
    def test_blocking_execute_middle_cp_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   757
        '''Checkpoint in middle of list failed in InstallEngine.execute_checkpoints blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   758
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   759
        # Add the checkpoint that will fail to middle of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   760
        failed_chkpt_name = "fail1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   761
        self.engine.register_checkpoint(failed_chkpt_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   762
                                        *self.failed_cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   763
                                        insert_before="four")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   764
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   765
        status, failed = self.engine.execute_checkpoints(dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   766
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   767
        self.check_expected_failures([failed_chkpt_name], status, failed)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   768
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   769
        # Make sure the incomplete checkpoint is the failed checkpoint.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   770
        cp = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   771
        self.assertEqual(cp.name, failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   772
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   773
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   774
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   775
    def test_non_blocking_execute_first_cp_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   776
        '''First checkpoint failed in InstallEngine.execute_checkpoints non-blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   777
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   778
        # Add the checkpoint that will fail to beginning of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   779
        failed_chkpt_name = "fail1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   780
        self.engine.register_checkpoint(failed_chkpt_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   781
                                        *self.failed_cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   782
                                        insert_before="one")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   783
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   784
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   785
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   786
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   787
        # Empty checkpoints shouldn't take long - if they do, something's wrong
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   788
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   789
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   790
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   791
        self.engine.checkpoint_thread.join(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   792
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   793
        self.check_expected_failures([failed_chkpt_name],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   794
                                     self.callback_results[0],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   795
                                     self.callback_results[1])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   796
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   797
        # Make sure the incomplete checkpoint is the failed checkpoint.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   798
        cp = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   799
        self.assertEqual(cp.name, failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   800
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   801
        self.assertFalse(self.engine.checkpoint_thread.is_alive(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   802
                         "Checkpoint thread still running")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   803
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   804
    def test_non_blocking_execute_middle_cp_failed(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   805
        '''Checkpoint in middle of list failed in InstallEngine.execute_checkpoints non-blocking mode '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   806
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   807
        # Add the checkpoint that will fail to middle of list
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   808
        failed_chkpt_name = "fail1"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   809
        self.engine.register_checkpoint(failed_chkpt_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   810
                                        *self.failed_cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   811
                                        insert_before="four")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   812
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   813
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   814
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   815
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   816
        # Empty checkpoints shouldn't take long - if they do, something's wrong
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   817
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   818
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   819
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   820
        self.engine.checkpoint_thread.join(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   821
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   822
        self.check_expected_failures([failed_chkpt_name],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   823
                                     self.callback_results[0],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   824
                                     self.callback_results[1])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   825
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   826
        # Make sure the incomplete checkpoint is the failed checkpoint.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   827
        cp = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   828
        self.assertEqual(cp.name, failed_chkpt_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   829
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   830
        self.assertFalse(self.engine.checkpoint_thread.is_alive(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   831
                         "Checkpoint thread still running")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   832
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   833
    def test_cp_failed_stop_on_error(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   834
        '''Validate that when stop_on_error is set to false, all errors are reported '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   835
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   836
        # Add a few checkpoints that will fail to various spots on
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   837
        # list of checkpoints to run
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   838
        expected_failed_cp = ["failed1", "failed2", "failed3"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   839
        insert_before_list = ["one", "three", "five"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   840
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   841
        for (failed_cp, insert_name) in izip(expected_failed_cp,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   842
                                             insert_before_list):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   843
            self.engine.register_checkpoint(failed_cp,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   844
                                            *self.failed_cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   845
                                            insert_before=insert_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   846
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   847
        self.engine.stop_on_error = False
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   848
        status, failed = self.engine.execute_checkpoints(dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   849
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   850
        self.check_expected_failures(expected_failed_cp, status, failed)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   851
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   852
        # Make sure the first incomplete checkpoint is the
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   853
        # first failed checkpoint.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   854
        cp = self.engine.get_first_incomplete()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   855
        self.assertNotEqual(cp, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   856
        self.assertEqual(cp.name, expected_failed_cp[0])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   857
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   858
    def test_nothing_to_exec(self):
913
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   859
        '''Validate a warning is issued when there's no checkpoint to execute'''
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   860
        with warnings.catch_warnings(record=True) as w:
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   861
            self.engine.execute_checkpoints(start_from="one",
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   862
                                            pause_before="one")
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   863
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   864
            self.assertEqual(len(w), 1)
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   865
            self.assertTrue(w[-1].category, UserWarning)
83925e67521c 6996397 InstallEngine missing import of warnings module
Karen Tung <karen.tung@oracle.com>
parents: 909
diff changeset
   866
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   867
    def test_gen_tmp_dir_w_env(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   868
        '''Validate path of tmp DOC dir is determined correctly with TEMP_DOC_DIR env variable '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   869
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   870
        cache_path_env = "/tmp/__engine_doc_path_test"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   871
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   872
        os.environ[self.engine.TMP_CACHE_ENV] = cache_path_env
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   873
        path_result = self.engine._gen_tmp_dir()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   874
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   875
        # clean up the values set for this test
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   876
        del os.environ[self.engine.TMP_CACHE_ENV]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   877
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   878
        self.assertEqual(path_result, cache_path_env)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   879
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   880
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   881
class EngineRegisterTests(EngineTest):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   882
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   883
    def setUp(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   884
        EngineTest.setUp(self)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   885
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   886
        name_list = ["one", "two", "three", "four", "five"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   887
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   888
        # a generic list of test checkpoints
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   889
        self.test_chkpt_list = []
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   890
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   891
        if _THIS_DIR.startswith("/"):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   892
            self.cp_mod_name = "empty_checkpoint"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   893
            self.cp_mod_path = _THIS_DIR
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   894
            self.cp_path = _THIS_DIR + "/empty_checkpoint"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   895
        else:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   896
            self.cp_mod_name = _THIS_DIR + "/empty_checkpoint"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   897
            self.cp_mod_path = None
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   898
            self.cp_path = self.cp_mod_name
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   899
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   900
        for n in name_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   901
            chkpt = checkpoint_data.CheckpointData(n, self.cp_mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   902
                                   self.cp_mod_path, "EmptyCheckpoint", None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   903
                                   None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   904
            self.test_chkpt_list.append(chkpt)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   905
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   906
    def check_result(self, expected_list):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   907
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   908
        self.assertEquals(len(expected_list), len(self.engine._checkpoints))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   910
        for expected_data, cp_data in zip(expected_list,
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
   911
                                          self.engine._checkpoints):
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   912
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   913
            self.assertEquals(cp_data.cp_info.cp_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   914
                              expected_data.cp_info.cp_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   915
                              "Module name: Expected %s, got %s" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   916
                              (expected_data.cp_info.cp_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   917
                              cp_data.cp_info.cp_name))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   918
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   919
            self.assertEquals(cp_data.cp_info.mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   920
                              expected_data.cp_info.mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   921
                              "Module name: Expected %s, got %s" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   922
                              (expected_data.cp_info.mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   923
                              cp_data.cp_info.mod_name))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   924
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   925
            self.assertEquals(cp_data.cp_info.module_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   926
                              expected_data.cp_info.module_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   927
                              "Module path: Expected %s, got %s" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   928
                              (expected_data.cp_info.module_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   929
                              cp_data.cp_info.module_path))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   930
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   931
            self.assertEquals(cp_data.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   932
                              expected_data.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   933
                              "Checkpoint class name: Expected %s, got %s" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   934
                              (expected_data.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   935
                              cp_data.cp_info.checkpoint_class_name))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   936
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   937
    def test_reg_one_chkpt_min_arg_ok(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   938
        '''Verify that register a checkpoint works with minimal required args '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   939
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   940
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   941
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   942
            self.engine.register_checkpoint(chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   943
                self.cp_path, chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   944
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   945
            self.fail("Failed to register 1 checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   946
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   947
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   948
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   949
    def test_reg_multi_chkpt_min_arg_ok(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   950
        '''Verify that register multiple checkpoint works with minimal required args '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   951
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   952
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   953
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   954
                self.engine.register_checkpoint(chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   955
                    self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   956
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   957
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   958
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   959
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   960
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   961
        self.check_result(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   962
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   963
    def test_reg_chkpt_no_name(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   964
        '''Verify that register a checkpoint without checkpoint name fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   965
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   966
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   967
        self.assertRaises(TypeError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   968
                          self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   969
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   970
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   971
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   972
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   973
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   974
    def test_reg_chkpt_blank_name(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   975
        '''Verify that register a checkpoint with a name of "" fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   976
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   977
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   978
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   979
                          self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   980
                          "",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   981
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   982
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   983
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   984
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   985
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   986
    def test_reg_chkpt_None_name(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   987
        '''Verify that register a checkpoint with a name of None fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   988
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   989
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   990
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   991
                          self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   992
                          None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   993
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   994
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   995
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   996
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   997
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   998
    def test_reg_chkpt_dup_name(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
   999
        '''Verify that register a checkpoint with duplicate checkpoint name fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1000
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1001
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1002
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1003
            self.engine.register_checkpoint(chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1004
                self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1005
                chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1006
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1007
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1008
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1009
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1010
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1011
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1012
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1013
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1014
        # Make sure only 1 checkpoint is registered.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1015
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1016
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1017
    def test_reg_chkpt_no_path(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1018
        '''Verify that register a checkpoint without module path fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1019
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1020
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1021
        self.assertRaises(TypeError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1022
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1023
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1024
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1025
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1026
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1027
    def test_reg_chkpt_blank_path(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1028
        '''Verify that register a checkpoint with module path of "" fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1029
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1030
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1031
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1032
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1033
                          "", chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1034
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1035
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1036
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1037
    def test_reg_chkpt_none_path(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1038
        '''Verify that register a checkpoint with module path of None fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1039
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1040
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1041
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1042
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1043
                          None, chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1044
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1045
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1046
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1047
    def test_reg_chkpt_invalid_path(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1048
        '''Verify that register a checkpoint with invalid module path fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1049
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1050
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1051
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1052
        self.assertRaises(ImportError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1053
                          self.engine.register_checkpoint, chkpt.name,
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
  1054
                          chkpt.cp_info.mod_name+"/junk",
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1055
                          chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1056
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1057
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1058
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1059
    def test_reg_chkpt_no_chkp_class(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1060
        '''Verify that register a checkpoint without checkpoint class name fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1061
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1062
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1063
        self.assertRaises(TypeError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1064
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1065
                          self.cp_path)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1066
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1067
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1068
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1069
    def test_reg_chkpt_blank_chkp_class(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1070
        '''Verify that register a checkpoint with checkpoint class name of "" fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1071
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1072
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1073
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1074
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1075
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1076
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1077
                          "")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1078
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1079
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1080
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1081
    def test_reg_chkpt_none_chkp_class(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1082
        '''Verify that register a checkpoint with checkpoint class name of None fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1083
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1084
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1085
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1086
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1087
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1088
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1089
                          None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1090
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1091
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1092
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1093
    def test_reg_chkpt_invalid_chkp_class(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1094
        '''Verify that register a checkpoint with invalid checkpoint class name fails '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1095
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1096
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1097
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1098
        self.assertRaises(AttributeError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1099
                          self.engine.register_checkpoint, chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1100
                          self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1101
                          "Junk")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1102
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1103
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1104
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1105
    def test_reg_with_one_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1106
        '''Verify that register a checkpoint that expects 1 arg to instantiate works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1107
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1108
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1109
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1110
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1111
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1112
                chkpt.cp_info.checkpoint_class_name, args=["arg1"])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1113
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1114
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1115
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1116
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1117
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1118
    def test_reg_with_one_missing_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1119
        '''Verify that register a checkpoint that expects 1 arg to instantiate, don't specify arg fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1120
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1121
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1122
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1123
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1124
                chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1125
                chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1126
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1127
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1128
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1129
    def test_reg_with_multi_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1130
        '''Verify that register a checkpoint that expects multiple args to instantiate works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1131
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1132
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1133
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithMultipleArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1134
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1135
            args = ["arg1", "arg2"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1136
            self.engine.register_checkpoint(chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1137
                self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1138
                chkpt.cp_info.checkpoint_class_name, args=args)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1139
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1140
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1141
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1142
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1143
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1144
    def test_reg_with_one_missing_multiple_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1145
        '''Verify that register a checkpoint that expects multiple args to instantiate, only specify 1 arg fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1146
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1147
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1148
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithMultipleArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1149
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1150
                chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1151
                chkpt.cp_info.checkpoint_class_name, args=["arg1"])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1152
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1153
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1154
    def test_reg_expect_1_kw_arg_provide_none(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1155
        '''Verify that register a checkpoint that takes 1 keyword to instantiate, no providing keyword arg works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1156
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1157
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1158
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1159
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1160
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1161
                chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1162
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1163
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1164
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1165
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1166
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1167
    def test_reg_expect_1_kw_arg_provide_1(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1168
        '''Verify that register a checkpoint that takes 1 keyword to instantiate, providing value keyword arg works '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1169
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1170
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1171
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1172
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1173
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1174
                chkpt.cp_info.checkpoint_class_name, kwargs={"kw1":"kw1"})
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1175
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1176
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1177
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1178
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1179
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1180
    def test_reg_expect_1_kw_arg_provide_2(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1181
        '''Verify that register a checkpoint that takes 1 keyword to instantiate, providing 2 keyword arg fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1182
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1183
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1184
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1185
        kwargs = {"kw1":"kw1", "other_kw":"other_kw"}
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1186
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1187
                chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1188
                chkpt.cp_info.checkpoint_class_name, kwargs=kwargs)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1189
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1190
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1191
    def test_reg_expect_multi_kw_arg_provide_none(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1192
        '''Verify that register a checkpoint that takes multiple keyword args to instantiate, not providing keyword arg works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1193
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1194
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1195
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithMultipleKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1196
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1197
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1198
                chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1199
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1200
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1201
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1202
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1203
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1204
    def test_reg_expect_multi_kw_arg_provide_1(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1205
        '''Verify that register a checkpoint that takes multiple keyword args to instantiate, providing one of them works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1206
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1207
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1208
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithMultipleKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1209
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1210
            kwargs = {"kw2":"kw2"}
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1211
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1212
                chkpt.cp_info.checkpoint_class_name, kwargs=kwargs)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1213
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1214
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1215
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1216
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1217
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1218
    def test_reg_expect_multi_kw_arg_provide_multiple(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1219
        '''Verify that register a checkpoint that takes multiple keyword args to instantiate, providing all of them works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1220
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1221
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1222
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithMultipleKWArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1223
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1224
            kwargs = {"kw1":"kw1", "kw2":"kw2"}
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1225
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1226
                chkpt.cp_info.checkpoint_class_name, kwargs=kwargs)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1227
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1228
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1229
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1230
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1231
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1232
    def test_reg_expect_args_and_multi_kw_arg_ok(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1233
        '''Verify that register a checkpoint that takes multiple arguments and multiple keyword args to instantiate, providing all of them works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1234
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1235
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1236
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithArgsAndKW"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1237
        args = ["arg1", "arg2"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1238
        kwargs = {"kw1":"kw1", "kw2":"kw2"}
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1239
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1240
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1241
                chkpt.cp_info.checkpoint_class_name, args=args, kwargs=kwargs)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1242
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1243
            self.fail("Failed to register checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1244
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1245
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1246
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1247
    def test_reg_expect_args_and_multi_kw_arg_missing_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1248
        '''Verify that register a checkpoint that takes multiple arguments and multiple keyword args to instantiate, not providing 1 required argument fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1249
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1250
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1251
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithArgsAndKW"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1252
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1253
                          chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1254
                          chkpt.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1255
                          args=["arg1"], kwargs={"kw1":"kw1", "kw2":"kw2"})
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1256
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1257
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1258
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1259
    def test_reg_missing_required_arg_with_arg(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1260
        '''Verify that register a checkpoint with 1 required arg. Provide the arg, but do not provide classname, which is required for register_checkpoint function fails.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1261
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1262
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1263
        chkpt.cp_info.checkpoint_class_name = "EmptyCheckpointWithArgs"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1264
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1265
                chkpt.name, self.cp_path, args=["hello"])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1266
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1267
        self.check_result([])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1268
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1269
    def test_reg_one_chkpt_loglevel_ok(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1270
        '''Verify that register a checkpoint specifying loglevel works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1271
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1272
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1273
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1274
            self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1275
                chkpt.cp_info.checkpoint_class_name, loglevel=DEBUG)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1276
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1277
            self.fail("Failed to register 1 checkpoint with valid arguments")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1278
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1279
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1280
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1281
    def test_reg_insert_before_beginning(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1282
        '''Verify that register a checkpoint at beginning of list using insert_before works.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1283
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1284
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1285
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1286
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1287
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1288
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1289
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1290
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1291
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1292
        new_chkpt = checkpoint_data.CheckpointData("another",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1293
                               self.cp_mod_name, self.cp_mod_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1294
                               "EmptyCheckpoint", None, None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1295
        self.engine.register_checkpoint(new_chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1296
            new_chkpt.cp_info.checkpoint_class_name, insert_before="one")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1297
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1298
        new_list = [new_chkpt]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1299
        new_list.extend(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1300
        self.check_result(new_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1301
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1302
    def test_reg_insert_before_middle_list(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1303
        '''Verify that register a checkpoint at middle of list using insert_before works.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1304
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1305
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1306
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1307
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1308
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1309
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1310
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1311
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1312
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1313
        new_chkpt = checkpoint_data.CheckpointData("another", self.cp_mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1314
                               self.cp_mod_path, "EmptyCheckpoint", None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1315
                               None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1316
        self.engine.register_checkpoint(new_chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1317
            new_chkpt.cp_info.checkpoint_class_name, insert_before="four")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1318
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1319
        new_list = [self.test_chkpt_list[0], self.test_chkpt_list[1],
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1320
                    self.test_chkpt_list[2], new_chkpt,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1321
                    self.test_chkpt_list[3], self.test_chkpt_list[4]]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1322
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1323
        self.check_result(new_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1324
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1325
    def test_reg_insert_before_invalid_name(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1326
        '''Verify that register a checkpoint specifying invalid name for insert_before fails.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1327
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1328
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1329
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1330
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1331
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1332
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1333
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1334
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1335
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1336
        new_chkpt = checkpoint_data.CheckpointData("another", self.cp_mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1337
                               self.cp_mod_path, "EmptyCheckpoint", None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1338
                               None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1339
        self.assertRaises(engine.ChkptRegistrationError,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1340
            self.engine.register_checkpoint, new_chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1341
            self.cp_path, new_chkpt.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1342
            insert_before="invalid_name")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1343
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1344
        self.check_result(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1345
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1346
    def test_reg_insert_before_and_loglevel(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1347
        '''Verify that register a checkpoint with both loglevel and insert_before argument works.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1348
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1349
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1350
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1351
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1352
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1353
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1354
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1355
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1356
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1357
        new_chkpt = checkpoint_data.CheckpointData("another",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1358
                               self.cp_mod_name, self.cp_mod_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1359
                               "EmptyCheckpoint", None, None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1360
        self.engine.register_checkpoint(new_chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1361
            new_chkpt.cp_info.checkpoint_class_name, insert_before="one",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1362
            loglevel=ERROR)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1363
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1364
        new_list = [new_chkpt]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1365
        new_list.extend(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1366
        self.check_result(new_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1367
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1368
    def test_reg_insert_before_and_loglevel_and_args(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1369
        '''Verify that register a checkpoint with both loglevel, insert_before argument, and arguments for checkpoint works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1370
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1371
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1372
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1373
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1374
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1375
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1376
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1377
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1378
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1379
        new_chkpt = checkpoint_data.CheckpointData("another", self.cp_mod_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1380
                                self.cp_mod_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1381
                                "EmptyCheckpointWithArgsAndKW", None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1382
                                None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1383
        args = ["arg1", "arg2"]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1384
        kwargs = {"kw1":"kw1"}
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1385
        self.engine.register_checkpoint(new_chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1386
            new_chkpt.cp_info.checkpoint_class_name, args=args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1387
            insert_before="one", loglevel=ERROR, kwargs=kwargs)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1388
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1389
        new_list = [new_chkpt]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1390
        new_list.extend(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1391
        self.check_result(new_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1392
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1393
    def test_reg_insert_before_and_loglevel_and_missing_args(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1394
        '''Verify that register a checkpoint with loglevel, insert_before argument, but missing arg for checkpoint fails'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1395
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1396
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1397
            for chkpt in self.test_chkpt_list:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1398
                self.engine.register_checkpoint(chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1399
                    chkpt.cp_info.checkpoint_class_name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1400
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1401
            self.fail("Failed to register checkpoint %s with valid arguments" %
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1402
                       chkpt.name)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1403
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1404
        new_chkpt = checkpoint_data.CheckpointData("another",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1405
                               self.cp_mod_name, self.cp_mod_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1406
                               "EmptyCheckpointWithArgsAndKW", None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1407
                               None, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1408
        self.assertRaises(TypeError, self.engine.register_checkpoint,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1409
                          new_chkpt.name, self.cp_path,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1410
                          new_chkpt.cp_info.checkpoint_class_name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1411
                          args=["arg1"], insert_before="one",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1412
                          loglevel=ERROR, kwargs={"kw1":"kw1"})
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1413
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1414
        self.check_result(self.test_chkpt_list)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1415
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1416
    def test_reg_none_arg_ok(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1417
        '''Verify that register a checkpoint providing None as args and kwargs works'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1418
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1419
        chkpt = self.test_chkpt_list[0]
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1420
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1421
            self.engine.register_checkpoint(chkpt.name,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1422
                self.cp_path, chkpt.cp_info.checkpoint_class_name, args=None,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1423
                kwargs=None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1424
        except Exception:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1425
            self.fail("Failed to register 1 checkpoint with args=None, kwargs=None")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1426
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1427
        self.check_result([chkpt])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1428
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
  1429
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1430
class EngineCancelTests(EngineCheckpointsBase):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1431
    '''Test InstallEngine.cancel_checkpoints(...) scenarios'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1432
    
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1433
    CANCEL_CP_NAME = "cancel_cp"
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1434
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1435
    def setUp(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1436
        EngineCheckpointsBase.setUp(self)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1437
        self.engine.data_object_cache = MockDOC()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1438
        errsvc.clear_error_list()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1439
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1440
    def reg_cancel_checkpoint(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1441
        # register a check that looks for the cancel flag in the middle
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1442
        # of the previouly registered checkpoint list.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1443
        self.engine.register_checkpoint(EngineCancelTests.CANCEL_CP_NAME,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1444
                                        *self.cp_data_args,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1445
                                        insert_before="three",
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1446
                                        kwargs={"wait_for_cancel":True})
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1447
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1448
    def test_cancel(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1449
        '''Test InstallEngine.cancel_checkpoints for the success case'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1450
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1451
        # register a checkpoint that looks for the cancel flag
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1452
        self.reg_cancel_checkpoint()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1453
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1454
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1455
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1456
 
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1457
        # Wait a little bit so we get to the checkpoint we expect to cancel
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1458
        self.callback_executed.wait(5)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1459
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1460
        self.engine.cancel_checkpoints()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1461
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1462
        # Wait for the cancel request to end the execute_checkpoints(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1463
        # it should not take too long.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1464
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1465
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1466
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1467
 
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1468
        # Wait 15 seconds for the cancel to take place.  It should
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1469
        # not take that long.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1470
        self.engine.checkpoint_thread.join(15)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1471
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1472
        self.assertEqual(self.callback_results[0], self.engine.EXEC_CANCELED,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1473
                          "Engine did not return EXEC_CANCELED")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1474
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1475
        # Name of the checkpoint canceled should be returned.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1476
        self.assertEqual(1, len(self.callback_results[1]))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1477
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1478
        self.assertEqual(EngineCancelTests.CANCEL_CP_NAME,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1479
                         (self.callback_results[1])[0])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1480
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1481
    def test_cancel_did_not_start_exec(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1482
        '''Verify InstallEngine.cancel_checkpoints behave correctly when checkpoints are registered, but nothing is executing.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1483
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1484
        # register a checkpoint that looks for the cancel flag
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1485
        self.reg_cancel_checkpoint()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1486
1717
10cb4d15a248 7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents: 1350
diff changeset
  1487
        # Call cancel_checkpoints
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1488
        self.engine.cancel_checkpoints()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1489
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1490
        # Make sure the cancel checkpoint is not executed
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1491
        cp_data = self.engine.get_cp_data(EngineCancelTests.CANCEL_CP_NAME)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1492
        self.assertFalse(cp_data.completed)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1493
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1494
    def test_cancel_finished_exec(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1495
        '''Verify InstallEngine.cancel_checkpoints behave correctly when all checkpoints finished executing and there's nothing to cancel.'''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1496
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1497
        status, failed_cp = self.engine.execute_checkpoints(dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1498
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1499
        self.assertEquals(status, self.engine.EXEC_SUCCESS)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1500
        self.assertEqual(0, len(failed_cp))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1501
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1502
        # All checkpoints should be completed
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1503
        self.assertEqual(self.engine.get_first_incomplete(), None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1504
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1505
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1506
        # Call cancel_checkpoints, should be a no op, make sure no exception
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1507
        # is raised.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1508
        try:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1509
            self.engine.cancel_checkpoints()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1510
        except Exception, ex:
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1511
            self.fail("cancel checkpoint failed after execute completed")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1512
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1513
    def test_exec_after_cancel(self):
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1514
        '''Verify execute_checkpoint() works correctly after cancel_checkpoints is called. '''
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1515
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1516
        # register a checkpoint that looks for the cancel flag
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1517
        self.reg_cancel_checkpoint()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1518
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1519
        self.engine.execute_checkpoints(callback=self._exec_cp_callback,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1520
                                        dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1521
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1522
        # Wait a little bit so we get to the checkpoint we expect to cancel
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1523
        self.callback_executed.wait(5)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1524
 
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1525
        self.engine.cancel_checkpoints()
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1526
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1527
        # Wait for the cancel request to end the execute_checkpoints(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1528
        # it should not take too long.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1529
        self.callback_executed.wait(10)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1530
        self.assertTrue(self.callback_executed.is_set(),
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1531
                        "Callback wasn't called-back")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1532
        # Wait 15 seconds for the cancel to take place.  It should
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1533
        # not take that long.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1534
        self.engine.checkpoint_thread.join(15)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1535
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1536
        self.assertEqual(self.callback_results[0], self.engine.EXEC_CANCELED,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1537
                          "Engine did not return EXEC_CANCELED")
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1538
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1539
        # Name of the checkpoint canceled should be returned.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1540
        self.assertEqual(1, len(self.callback_results[1]))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1541
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1542
        self.assertEqual(EngineCancelTests.CANCEL_CP_NAME,
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1543
                         (self.callback_results[1])[0])
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1544
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1545
        # Change the parameter of the checkpoint that would wait for the
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1546
        # cancel, to not do the waiting
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1547
        cp_data = self.engine.get_cp_data(EngineCancelTests.CANCEL_CP_NAME)
1290
cfaa7349f221 7004000 Install engine enhancement to save original args/kwargs list before calling checkpoint's execute
Karen Tung <Karen.Tung@oracle.com>
parents: 1073
diff changeset
  1548
        cp_data.cp_info.reg_kwargs["wait_for_cancel"] = False
909
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1549
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1550
        # continue execution.  Make sure rest of checkpoints are executed.
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1551
        status, failed_cp = self.engine.execute_checkpoints(dry_run=True)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1552
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1553
        self.assertEquals(status, self.engine.EXEC_SUCCESS)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1554
        self.assertEqual(0, len(failed_cp))
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1555
        
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1556
        # All checkpoints should be completed
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1557
        self.assertEqual(self.engine.get_first_incomplete(), None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1558
        self.assertEqual(self.engine.checkpoint_thread, None)
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1559
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1560
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1561
if __name__ == '__main__':
ab25dde8919d 16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff changeset
  1562
    unittest.main()