[Title] add verbose option for build-cli
authorjiil.hyoun <jiil.hyoun@samsung.com>
Fri, 16 Nov 2012 05:47:29 +0000 (14:47 +0900)
committerjiil.hyoun <jiil.hyoun@samsung.com>
Fri, 16 Nov 2012 05:47:29 +0000 (14:47 +0900)
[Type] Enhancement
[Module] Toolchain /
[Priority] Major
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: Iad0f24224255513be2870427ee1f5e609fc1f485

build-cli
src/build_server/BuildClientOptionParser.rb
src/build_server/JobLog.rb
src/build_server/RemoteBuilder.rb
src/build_server/SocketJobRequestListener.rb
src/common/log.rb
test/build-server.basic1/build-cli-01.testcase

index e2bdf66c82f9753564c01d9aa2e6012541b89200..7b4ff0a600b49e78731644dd46a795ffba59a145 100755 (executable)
--- a/build-cli
+++ b/build-cli
@@ -62,7 +62,7 @@ def query( ip, port, sym )
        end
        client.send "QUERY|#{sym.strip}"
        result = client.receive_data()
-       if result.nil? then 
+       if result.nil? then
                puts "Error: #{client.get_error_msg()}"
        end
        client.terminate
@@ -161,7 +161,7 @@ begin
                end
                client = BuildCommClient.create( result[0], result[1], nil, 0 )
                if not client.nil? then
-                       client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:noreverse]}|#{option[:dist]}|#{option[:user]}"
+                       client.send "BUILD|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:noreverse]}|#{option[:dist]}|#{option[:user]}|#{option[:verbose]}"
                        if not client.print_stream then
                                puts "ERROR: #{client.get_error_msg()}"
                        end
@@ -181,7 +181,7 @@ begin
                end
                client = BuildCommClient.create( result[0], result[1], nil, 0 )
                if not client.nil? then
-                       client.send "RESOLVE|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:dist]}|#{option[:user]}"
+                       client.send "RESOLVE|GIT|#{option[:project]}|#{option[:passwd]}|#{option[:os]}|#{option[:async]}|#{option[:dist]}|#{option[:user]}|#{option[:verbose]}"
                        if not client.print_stream then
                                puts "ERROR: #{client.get_error_msg()}"
                        end
index b7a57263aad4071f3167b9a603d0158d74d078a3..c239ee2553d8139242a6176267e49323ee85d883 100644 (file)
@@ -31,8 +31,8 @@ require 'optparse'
 require 'utils'
 
 class BuildClientUsage
-       BUILD="build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]"
-       RESOLVE="build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]"
+       BUILD="build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]"
+       RESOLVE="build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]"
        QUERY="build-cli query -d <server address>"
        QUERY_SYSTEM="build-cli query-system -d <server address>"
        QUERY_PROJECT="build-cli query-project -d <server address>"
@@ -184,6 +184,11 @@ def option_parse
                        options[:user] = user
                end
 
+               options[:verbose] = "NO"
+               opts.on( '-V', '--verbose', 'verbose mode' ) do
+                       options[:verbose] = "YES"
+               end
+
                opts.on( '-h', '--help', 'display help' ) do
                        opts.help.split("\n").each {|op| puts op if not op.include? "--noreverse"}
                        exit
index 8b34a090422ff6a8621d4589cca1ac26dbcca87f..8628a10e1c012fffd4264c26891bdff7cf124159 100644 (file)
@@ -34,14 +34,15 @@ require "BuildComm.rb"
 
 class JobLog < Log
 
-       def initialize(job, stream_out)
+       def initialize(job, stream_out, verbose = false)
+               log_level = (verbose) ?  Log::LV_NORMAL : Log::LV_USER
                if job.nil? then
                        super(nil)
                else
                        if not File.exist? "#{job.server.path}/jobs/#{job.id}" then
                                FileUtils.mkdir_p "#{job.server.path}/jobs/#{job.id}"
                        end
-                       super("#{job.server.path}/jobs/#{job.id}/log")
+                       super("#{job.server.path}/jobs/#{job.id}/log",log_level)
                end
                @parent_job=job
                @second_out = stream_out
index 1d03db6b7bb7fcf205b75b4abe531113be46b729..52d46e80160f45006030d2fc03cfd65ff6d8251c 100644 (file)
@@ -100,7 +100,7 @@ class RemoteBuilder
                # send build request
                @log.info( "Sending build request to remote server...", Log::LV_USER )
                result, result_files = send_build_request(git_repos, os, is_rev_build,
-                                                                                                 srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email)
+                                                                                                 srcinfo, no_reverse, local_pkgs, dock, dist_name, user_email, @log.is_verbose)
 
                @log.info( "Receiving log file from remote server...", Log::LV_USER )
                if not receive_file_from_remote( "#{source_path}/../remote_log", dock ) then
@@ -163,7 +163,7 @@ class RemoteBuilder
 
        # send build request
        protected
-       def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email)
+       def send_build_request(git_repos, os, is_rev_build, commit, no_reverse, local_pkgs, dock, dist_name, user_email, verbose)
                result_files = []
 
                client = BuildCommClient.create( @addr, @port, @log )
@@ -176,13 +176,14 @@ class RemoteBuilder
                local_pkg_names = local_pkgs.map { |path| File.basename(path) }
 
                # send
-               # format: BUILD|GIT|repository|passwd|os|async|no_reverse|internal|rev-build|commit|pkgs|dock_num|dist_name|user_email
-               # value : BUILD|GIT|repository|      |os|NO   |no_reverse|YES     |rev-build|commit|pkgs|dock_num|dist_name|user_email
+               #          0   | 1 |    2     |   3  | 4|  5  |     6    |    7    |    8     |   9   |   10   |   11    |  12  | 13 |  14
+               # format: BUILD|GIT|repository|passwd|os|async|no_reverse|dist_name|user_email|verbose|internal|rev-build|commit|pkgs|dock_num
+               # value : BUILD|GIT|repository|      |os|NO   |no_reverse|dist_name|user_email|verbose|YES     |rev-build|commit|pkgs|dock_num
                result = true
                commit = commit.nil? ? "":commit
                pkg_list = local_pkg_names.join(",")
                rev = is_rev_build ? "YES":"NO"
-               msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}|#{dist_name}|#{user_email}"
+               msg = "BUILD|GIT|#{git_repos}||#{os}|NO|#{no_reverse}|#{dist_name}|#{user_email}|#{verbose}|YES|#{rev}|#{commit}|#{pkg_list}|#{dock}"
                result = client.send( msg )
                if not result then
                        @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER)
index 51b66ceab48832cb3aa8f49e1fa6b4b74d8654b5..a8975b571663c31032782c8a9c5305ab50bae94c 100644 (file)
@@ -186,8 +186,9 @@ class SocketJobRequestListener
                        raise "Invalid request format is used: #{line}"
                end
 
-               # Case1. BUILD|GIT|project_name|passwd|os_list|async|no_reverse|dist_name|user_email
-               # Case2. BUILD|GIT|git_repos||os|async|no_reverse|internal|rev_build|commit|pkgs|dock_num|dist_name|user_email
+               #          0  | 1 |     2      |  3   |  4    |  5  |     6    |    7    |   8      |   9   |   10   |    11   |  12  | 13 |   14
+               # Case1. BUILD|GIT|project_name|passwd|os_list|async|no_reverse|dist_name|user_email|verbose
+               # Case2. BUILD|GIT|git_repos   |      |os     |async|no_reverse|dist_name|user_email|verbose|internal|rev_build|commit|pkgs|dock_num
 
                # parse
                project_name_list = tok[2].split(",")
@@ -196,18 +197,14 @@ class SocketJobRequestListener
                os_list = tok[4].split(",")
                async = tok[5].eql? "YES"
                no_reverse = tok[6].eql? "YES"
-               is_internal = tok[7].eql? "YES"
-               rev_job = tok[8].eql? "YES"
-               git_commit = (not tok[9].nil? and not tok[9].empty?) ? tok[9] : nil
-               pkg_files = (not tok[10].nil? and not tok[10].empty?) ? tok[10].split(",") : []
-               dock_num = (not tok[11].nil? and not tok[11].empty?) ? tok[11].strip : "0"
-               if not is_internal then
-                       dist_name = tok[7].strip
-                       user_email = tok[8].strip
-               else
-                       dist_name = tok[12].strip
-                       user_email = tok[13].strip
-               end
+               dist_name = tok[7].strip
+               user_email = tok[8].strip
+               verbose = tok[9].eql? "YES"
+               is_internal = tok[10].eql? "YES"
+               rev_job = tok[11].eql? "YES"
+               git_commit = (not tok[12].nil? and not tok[12].empty?) ? tok[12] : nil
+               pkg_files = (not tok[13].nil? and not tok[13].empty?) ? tok[13].split(",") : []
+               dock_num = (not tok[14].nil? and not tok[14].empty?) ? tok[14].strip : "0"
                if (dist_name.nil? or dist_name.empty?) then
                        dist_name = @parent_server.distmgr.get_default_distribution_name()
                end
@@ -289,7 +286,7 @@ class SocketJobRequestListener
                if no_reverse then new_job.set_no_reverse end
 
                # create logger and set
-               logger = JobLog.new( new_job, req )
+               logger = JobLog.new( new_job, req, verbose )
                if not async then new_job.set_logger(logger) end
                logger.init
 
@@ -345,7 +342,7 @@ class SocketJobRequestListener
                end
 
                case tok[1]
-                       # RESOLVE|GIT|repos|commit|os|async
+                       # RESOLVE|GIT|project_name|passwd|os|async|dist_name|user_email|verbose
                when "GIT"
                        # parse
                        project_name=tok[2]
@@ -353,6 +350,8 @@ class SocketJobRequestListener
                        os=tok[4]
                        async = tok[5].eql? "YES"
                        dist_name = tok[6]
+                       user_email = tok[7].strip
+                       verbose = tok[8].eql? "YES"
                        if (dist_name.nil? or dist_name.empty?) then
                                dist_name = @parent_server.distmgr.get_default_distribution_name()
                        end
@@ -387,11 +386,22 @@ class SocketJobRequestListener
                        end
                        @log.info "Received a request for resolving this project : #{project_name}, #{os}"
 
+                       # check user email
+                       user_id = @parent_server.check_user_id_from_email( user_email )
+                       if user_id != -1 then
+                               new_job.user_id = user_id
+                       else
+                               BuildCommServer.send_begin(req)
+                               req.puts "Error: Cannot find the user with \"#{user_email}\"!"
+                               BuildCommServer.send_end(req)
+                               raise "No user information!"
+                       end
+
                        # resolve
                        new_job.set_resolve_flag()
 
                        # create logger and set
-                       logger = JobLog.new( new_job, req )
+                       logger = JobLog.new( new_job, req, verbose )
                        if not async then new_job.set_logger(logger) end
                        logger.init
 
@@ -659,7 +669,7 @@ class SocketJobRequestListener
                new_job = @parent_server.prjmgr.create_new_full_build_job(dist_name)
 
                # set logger
-               logger = JobLog.new( new_job, req )
+               logger = JobLog.new( new_job, req)
                new_job.set_logger(logger)
                logger.init
 
index 17ce07d2f30d13b08a4c086b2034c1f3dc8601cf..646ad17e67f7eb89d7f700236f3fee3b3ba94e2c 100644 (file)
@@ -101,6 +101,10 @@ class Log
                @second_out= nil
        end
 
+       def is_verbose
+               return @second_out_level.eql? Log::LV_NORMAL
+       end
+
 
        protected
        def output_extra(msg)
index f414dcc2e5afdc8eea006f806e491a4cfbdb1468..90e5080d3b208e85e43b4451ecd1d0924f0ba16b 100644 (file)
@@ -18,8 +18,8 @@ cancel        Cancel a building project.
 register      Register the package to the build-server.
 
 Subcommand usage:
-build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]
-build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email]
+build-cli build -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]
+build-cli resolve -N <project name> -d <server address> [-o <os>] [-w <password>] [--async] [-D <distribution name>] [-U user-email] [-V]
 build-cli query -d <server address>
 build-cli query-system -d <server address>
 build-cli query-project -d <server address>
@@ -38,5 +38,6 @@ Options:
 -D, --dist <distribution name>   distribution name
 -t, --ftp <ftp server url>       ftp server url: ftp://dibsftp:dibsftp@127.0.0.1
 -U, --user <user email>          user email infomation
+-V, --verbose                    verbose mode
 -h, --help                       display help
 -v, --version                    display version