~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/lib/sys_mgmt/codeTree.py

  • Committer: Olaf van der Spek
  • Date: 2011-07-07 13:41:07 UTC
  • mto: This revision was merged to the branch mainline in revision 2385.
  • Revision ID: olafvdspek@gmail.com-20110707134107-6mi7pauiatxtf4oe
Rename strmake to strdup (standard name)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/env python
 
2
# -*- mode: python; indent-tabs-mode: nil; -*-
 
3
# vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
4
#
 
5
# Copyright (C) 2010 Patrick Crews
 
6
#
 
7
# This program is free software; you can redistribute it and/or modify
 
8
# it under the terms of the GNU General Public License as published by
 
9
# the Free Software Foundation; either version 2 of the License, or
 
10
# (at your option) any later version.
 
11
#
 
12
# This program is distributed in the hope that it will be useful,
 
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
15
# GNU General Public License for more details.
 
16
#
 
17
# You should have received a copy of the GNU General Public License
 
18
# along with this program; if not, write to the Free Software
 
19
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
20
 
 
21
"""codeTree
 
22
 
 
23
   definition of what a code tree should look like
 
24
   to the test-runner (which files /directories it should find where)
 
25
   
 
26
   Files paths can be in one of several locations that we locate via
 
27
   systemManager methods
 
28
 
 
29
"""
 
30
# imports
 
31
import os
 
32
 
 
33
 
 
34
class codeTree:
 
35
    """ Defines what files / directories we should find and where
 
36
        allows for optional / required.
 
37
 
 
38
    """
 
39
  
 
40
    def __init__(self, variables, system_manager):
 
41
        self.debug = variables['debug']
 
42
        self.system_manager = system_manager
 
43
        self.logging = system_manager.logging
 
44
 
 
45
    def debug_status(self):
 
46
            self.logging.debug(self)
 
47
            for key, item in sorted(vars(self).items()):
 
48
                self.logging.debug("%s: %s" %(key, item))
 
49
 
 
50
class drizzleTree(codeTree):
 
51
    """ What a Drizzle code tree should look like to the test-runner
 
52
    
 
53
    """
 
54
 
 
55
    def __init__(self, variables,system_manager):
 
56
        self.system_manager = system_manager
 
57
        self.logging = self.system_manager.logging
 
58
        self.skip_keys = ['ld_lib_paths']
 
59
        self.debug = variables['debug']
 
60
        self.verbose = variables['verbose']
 
61
        self.basedir = self.system_manager.find_path([os.path.abspath(variables['basedir'])])
 
62
        self.source_dist = os.path.isdir(os.path.join(self.basedir, 'drizzled'))
 
63
        self.builddir = self.system_manager.find_path([os.path.abspath(self.basedir)])
 
64
        self.top_builddir = variables['topbuilddir']
 
65
        self.testdir = self.system_manager.find_path([os.path.abspath(variables['testdir'])])
 
66
        self.clientbindir = self.system_manager.find_path([os.path.join(self.builddir, 'client')
 
67
                                     , os.path.join(self.basedir, 'client')
 
68
                                     , os.path.join(self.basedir, 'bin')])
 
69
        self.srcdir = self.system_manager.find_path([self.basedir])
 
70
        self.suite_paths = [ os.path.join(self.basedir,'plugin')
 
71
                           , os.path.join(self.testdir,'suite')
 
72
                           ]
 
73
 
 
74
 
 
75
        self.drizzle_client = self.system_manager.find_path([os.path.join(self.clientbindir,
 
76
                                                     'drizzle')])
 
77
 
 
78
        self.drizzledump = self.system_manager.find_path([os.path.join(self.clientbindir,
 
79
                                                     'drizzledump')])
 
80
 
 
81
        self.drizzleimport = self.system_manager.find_path([os.path.join(self.clientbindir,
 
82
                                                     'drizzleimport')])
 
83
 
 
84
        self.drizzle_server = self.system_manager.find_path([os.path.join(self.basedir,'drizzled/drizzled'),
 
85
                                         os.path.join(self.clientbindir,'drizzled'),
 
86
                                         os.path.join(self.basedir,'libexec/drizzled'),
 
87
                                         os.path.join(self.basedir,'bin/drizzled'),
 
88
                                         os.path.join(self.basedir,'sbin/drizzled'),
 
89
                                         os.path.join(self.builddir,'drizzled/drizzled')])
 
90
 
 
91
 
 
92
        self.drizzleslap = self.system_manager.find_path([os.path.join(self.clientbindir,
 
93
                                                     'drizzleslap')])
 
94
 
 
95
        self.schemawriter = self.system_manager.find_path([os.path.join(self.basedir,
 
96
                                                     'drizzled/message/schema_writer'),
 
97
                                        os.path.join(self.builddir,
 
98
                                                     'drizzled/message/schema_writer')])
 
99
 
 
100
        self.drizzletest = self.system_manager.find_path([os.path.join(self.clientbindir,
 
101
                                                   'drizzletest')])
 
102
 
 
103
        self.drizzle_trx_reader = self.system_manager.find_path([os.path.join(self.basedir,
 
104
                                                                 'plugin/transaction_log/utilities/drizzletrx')])
 
105
 
 
106
        self.server_version_string = None
 
107
        self.server_executable = None
 
108
        self.server_version = None
 
109
        self.server_compile_os = None
 
110
        self.server_platform = None
 
111
        self.server_compile_comment = None
 
112
        self.type = 'Drizzle'
 
113
 
 
114
        self.process_server_version()
 
115
        self.ld_lib_paths = self.get_ld_lib_paths()
 
116
         
 
117
        self.report()
 
118
 
 
119
        if self.debug:
 
120
            self.logging.debug_class(self)
 
121
 
 
122
    def report(self):
 
123
        self.logging.info("Using Drizzle source tree:")
 
124
        report_keys = ['basedir'
 
125
                      ,'clientbindir'
 
126
                      ,'testdir'
 
127
                      ,'server_version'
 
128
                      ,'server_compile_os'
 
129
                      ,'server_platform'
 
130
                      ,'server_comment']
 
131
        for key in report_keys:
 
132
            self.logging.info("%s: %s" %(key, vars(self)[key]))
 
133
        
 
134
 
 
135
 
 
136
    def process_server_version(self):
 
137
        """ Get the server version number from the found server executable """
 
138
        (retcode, self.server_version_string) = self.system_manager.execute_cmd(("%s --no-defaults --version" %(self.drizzle_server)))
 
139
        # This is a bit bobo, but we're doing it, so nyah
 
140
        # TODO fix this : )
 
141
        self.server_executable, data_string = [data_item.strip() for data_item in self.server_version_string.split('Ver ')]
 
142
        self.server_version, data_string = [data_item.strip() for data_item in data_string.split('for ')]
 
143
        self.server_compile_os, data_string = [data_item.strip() for data_item in data_string.split(' on')]
 
144
        self.server_platform = data_string.split(' ')[0].strip()
 
145
        self.server_comment = data_string.replace(self.server_platform,'').strip()
 
146
 
 
147
    def get_ld_lib_paths(self):
 
148
        """ Return a list of paths we want added to LD_LIB variables
 
149
 
 
150
            These are processed later by the system manager, but we want to 
 
151
            specify them here (for a drizzle source tree) and now
 
152
  
 
153
        """
 
154
        ld_lib_paths = []
 
155
        if self.source_dist:
 
156
            ld_lib_paths = [ os.path.join(self.basedir,"libdrizzleclient/.libs/")
 
157
                           , os.path.join(self.basedir,"libdrizzle-2.0/libdrizzle.libs")
 
158
                           , os.path.join(self.basedir,"libdrizzle/.libs")
 
159
                           , os.path.join(self.basedir,"libdrizzle-2.0/libdrizzle/.libs")
 
160
                           , os.path.join(self.basedir,"libdrizzle-1.0/libdrizzle/.libs")
 
161
                           , os.path.join(self.basedir,"mysys/.libs/")
 
162
                           , os.path.join(self.basedir,"mystrings/.libs/")
 
163
                           , os.path.join(self.basedir,"drizzled/.libs/")
 
164
                                             , "/usr/local/lib"
 
165
                           ]
 
166
        else:
 
167
            ld_lib_paths = [ os.path.join(self.basedir,"lib")]
 
168
        return ld_lib_paths
 
169
 
 
170