~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

  • Committer: patrick crews
  • Date: 2011-06-28 21:07:43 UTC
  • mto: (2429.2.1 dbqp_revamp)
  • mto: This revision was merged to the branch mainline in revision 2435.
  • Revision ID: gleebix@gmail.com-20110628210743-vkwxw84rs6lcmtb3
Code cleanup / reorganization

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
# -*- mode: python; indent-tabs-mode: nil; -*-
3
3
# vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
4
#
5
 
# Copyright (C) 2010 Patrick Crews
 
5
# Copyright (C) 2010, 2011 Patrick Crews
6
6
#
7
7
# This program is free software; you can redistribute it and/or modify
8
8
# it under the terms of the GNU General Public License as published by
144
144
    def get_ld_lib_paths(self):
145
145
        """ Return a list of paths we want added to LD_LIB variables
146
146
 
147
 
            These are processed later by the system manager, but we want to 
 
147
            These are processed later at the server_manager level, but we want to 
148
148
            specify them here (for a drizzle source tree) and now
149
149
  
150
150
        """
164
164
            ld_lib_paths = [ os.path.join(self.basedir,"lib")]
165
165
        return ld_lib_paths
166
166
 
 
167
class mysqlTree(codeTree):
 
168
    """ What a MySQL code tree should look like to the test-runner
 
169
    
 
170
    """
 
171
 
 
172
    def __init__(self, variables,system_manager):
 
173
        self.system_manager = system_manager
 
174
        self.logging = self.system_manager.logging
 
175
        self.skip_keys = ['ld_lib_paths']
 
176
        self.debug = variables['debug']
 
177
        self.verbose = variables['verbose']
 
178
        self.basedir = self.system_manager.find_path([os.path.abspath(variables['basedir'][0])])
 
179
        self.source_dist = os.path.isdir(os.path.join(self.basedir, 'mysqld'))
 
180
        self.builddir = self.system_manager.find_path([os.path.abspath(self.basedir)])
 
181
        self.top_builddir = variables['topbuilddir']
 
182
        self.testdir = self.system_manager.find_path([os.path.abspath(variables['testdir'])])
 
183
        self.clientbindir = self.system_manager.find_path([os.path.join(self.basedir, 'client_release')
 
184
                                                         , os.path.join(self.basedir, 'client_debug')
 
185
                                                         , os.path.join(self.basedir, 'client')
 
186
                                                         , os.path.join(self.basedir, 'bin')])
 
187
        self.charsetdir = self.system_manager.find_path([os.path.join(self.basedir, 'mysql/charsets')
 
188
                                                       , os.path.join(self.basedir, 'sql/share/charsets')
 
189
                                                       , os.path.join(self.basedir, 'share/charsets')])
 
190
 
 
191
        self.srcdir = self.system_manager.find_path([self.basedir])
 
192
        self.suite_paths = variables['suitepaths']
 
193
 
 
194
        self.mysql_client = self.system_manager.find_path([os.path.join(self.clientbindir,
 
195
                                                           'mysql')])
 
196
 
 
197
        self.mysqldump = self.system_manager.find_path([os.path.join(self.clientbindir,
 
198
                                                        'mysqldump')])
 
199
 
 
200
        self.mysqlimport = self.system_manager.find_path([os.path.join(self.clientbindir,
 
201
                                                          'mysqlimport')])
 
202
 
 
203
        self.mysqladmin = self.system_manager.find_path([os.path.join(self.clientbindir,
 
204
                                                         'mysqladmin')])
 
205
 
 
206
        self.mysql_server = self.system_manager.find_path([ os.path.join(self.basedir, '/sql/mysqld-debug')
 
207
                                                          , os.path.join(self.basedir, '/libexec/mysqld-debug')
 
208
                                                          , os.path.join(self.basedir, '/sbin/mysqld-debug')
 
209
                                                          , os.path.join(self.basedir, '/bin/mysqld-debug')
 
210
                                                          , os.path.join(self.basedir, '/sql/mysqld')
 
211
                                                          , os.path.join(self.basedir, '/libexec/mysqld')
 
212
                                                          , os.path.join(self.basedir, '/sbin/mysqld')
 
213
                                                          , os.path.join(self.basedir, '/bin/mysqld')
 
214
                                                          , os.path.join(self.basedir, '/sql/mysqld-max-nt')
 
215
                                                          , os.path.join(self.basedir, '/libexec/mysqld-max-nt')
 
216
                                                          , os.path.join(self.basedir, '/sbin/mysqld-max-nt')
 
217
                                                          , os.path.join(self.basedir, '/bin/mysqld-max-nt')
 
218
                                                          , os.path.join(self.basedir, '/sql/mysqld-max')
 
219
                                                          , os.path.join(self.basedir, '/libexec/mysqld-max')
 
220
                                                          , os.path.join(self.basedir, '/sbin/mysqld-max')
 
221
                                                          , os.path.join(self.basedir, '/bin/mysqld-max')
 
222
                                                          , os.path.join(self.basedir, '/sql/mysqld-nt')
 
223
                                                          , os.path.join(self.basedir, '/libexec/mysqld-nt')
 
224
                                                          , os.path.join(self.basedir, '/sbin/mysqld-nt')
 
225
                                                          , os.path.join(self.basedir, '/bin/mysqld-nt')
 
226
                                                          ])
 
227
 
 
228
 
 
229
 
 
230
        self.mysqlslap = self.system_manager.find_path([os.path.join(self.clientbindir,
 
231
                                                     'mysqlslap')])
 
232
 
 
233
        self.mysqltest = self.system_manager.find_path([os.path.join(self.clientbindir,
 
234
                                                   'mysqltest')])
 
235
 
 
236
        self.server_version_string = None
 
237
        self.server_executable = None
 
238
        self.server_version = None
 
239
        self.server_compile_os = None
 
240
        self.server_platform = None
 
241
        self.server_compile_comment = None
 
242
        self.type = 'mysql'
 
243
 
 
244
        self.process_server_version()
 
245
        self.ld_lib_paths = self.get_ld_lib_paths()
 
246
         
 
247
        self.report()
 
248
 
 
249
        self.logging.debug_class(self)
 
250
 
 
251
    def report(self):
 
252
        self.logging.info("Using mysql source tree:")
 
253
        report_keys = ['basedir'
 
254
                      ,'clientbindir'
 
255
                      ,'testdir'
 
256
                      ,'server_version'
 
257
                      ,'server_compile_os'
 
258
                      ,'server_platform'
 
259
                      ,'server_comment']
 
260
        for key in report_keys:
 
261
            self.logging.info("%s: %s" %(key, vars(self)[key]))
 
262
        
 
263
    def process_server_version(self):
 
264
        """ Get the server version number from the found server executable """
 
265
        (retcode, self.server_version_string) = self.system_manager.execute_cmd(("%s --no-defaults --version" %(self.mysql_server)))
 
266
        # This is a bit bobo, but we're doing it, so nyah
 
267
        # TODO fix this : )
 
268
        self.server_executable, data_string = [data_item.strip() for data_item in self.server_version_string.split('Ver ')]
 
269
        self.server_version, data_string = [data_item.strip() for data_item in data_string.split('for ')]
 
270
        self.server_compile_os, data_string = [data_item.strip() for data_item in data_string.split(' on')]
 
271
        self.server_platform = data_string.split(' ')[0].strip()
 
272
        self.server_comment = data_string.replace(self.server_platform,'').strip()
 
273
 
 
274
    def get_ld_lib_paths(self):
 
275
        """ Return a list of paths we want added to LD_LIB variables
 
276
 
 
277
            These are processed later at the server_manager level, but we want to 
 
278
            specify them here (for a mysql source tree) and now
 
279
  
 
280
        """
 
281
        ld_lib_paths = []
 
282
        if self.source_dist:
 
283
            ld_lib_paths = [ os.path.join(self.basedir,"libmysql/.libs/")
 
284
                           , os.path.join(self.basedir,"libmysql_r/.libs")
 
285
                           , os.path.join(self.basedir,"zlib/.libs")
 
286
                           ]
 
287
        else:
 
288
            ld_lib_paths = [ os.path.join(self.basedir,"lib")
 
289
                           , os.path.join(self.basedir,"lib/mysql")]
 
290
        return ld_lib_paths
 
291
 
 
292
 
167
293