PPSS passess the test case...
This commit is contained in:
		
							parent
							
								
									7550b4a5c1
								
							
						
					
					
						commit
						20e8cdce95
					
				
							
								
								
									
										93
									
								
								ppss
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								ppss
									
									
									
									
									
								
							@ -87,6 +87,8 @@ PROCESSED_ITEMS=""
 | 
				
			|||||||
UNPROCESSED_ITEMS=""
 | 
					UNPROCESSED_ITEMS=""
 | 
				
			||||||
ACTIVE_WORKERS="0"
 | 
					ACTIVE_WORKERS="0"
 | 
				
			||||||
DAEMON_POLLING_INTERVAL="10"
 | 
					DAEMON_POLLING_INTERVAL="10"
 | 
				
			||||||
 | 
					STAT=""
 | 
				
			||||||
 | 
					DAEMON_FILE_AGE="4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SSH_SERVER=""                           # Remote server or 'master'.
 | 
					SSH_SERVER=""                           # Remote server or 'master'.
 | 
				
			||||||
SSH_KEY=""                              # SSH key for ssh account.
 | 
					SSH_KEY=""                              # SSH key for ssh account.
 | 
				
			||||||
@ -553,6 +555,10 @@ process_arguments () {
 | 
				
			|||||||
                            DAEMON_POLLING_INTERVAL="$2"
 | 
					                            DAEMON_POLLING_INTERVAL="$2"
 | 
				
			||||||
                            add_var_to_config DAEMON_POLLING_INTERVAL "$DAEMON_POLLING_INTERVAL"
 | 
					                            add_var_to_config DAEMON_POLLING_INTERVAL "$DAEMON_POLLING_INTERVAL"
 | 
				
			||||||
                            shift 2 ;;
 | 
					                            shift 2 ;;
 | 
				
			||||||
 | 
					                 --file-age)
 | 
				
			||||||
 | 
					                            is_var_empty "$2"
 | 
				
			||||||
 | 
					                            add_var_to_config DAEMON_FILE_AGE "$DAEMON_FILE_AGE"
 | 
				
			||||||
 | 
					                            shift 2 ;;
 | 
				
			||||||
          --awskeypair|-P)
 | 
					          --awskeypair|-P)
 | 
				
			||||||
                AWS_KEYPAIR="$2"
 | 
					                AWS_KEYPAIR="$2"
 | 
				
			||||||
                add_var_to_config AWS_KEYPAIR "$AWS_KEYPAIR"
 | 
					                add_var_to_config AWS_KEYPAIR "$AWS_KEYPAIR"
 | 
				
			||||||
@ -787,6 +793,30 @@ set_md5 () {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set_stat () {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ "$DAEMON" = "1" ] && [ "$INOTIFY" = "0" ]
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        case $ARCH in
 | 
				
			||||||
 | 
					            "Darwin")  STAT="stat -f%m" ;;
 | 
				
			||||||
 | 
					            "FreeBSD") STAT="stat -f%m" ;;
 | 
				
			||||||
 | 
					            "SunOS")   STAT="gstat -c%Y" ;;
 | 
				
			||||||
 | 
					            "Linux")   STAT="stat -c%Y" ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $STAT . >> /dev/null 2>&1
 | 
				
			||||||
 | 
					        if [ ! "$?" ]
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            LOG ERROR "ERROR - PPSS daemon mode requires stat. It may not be within the path or installed."
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            return 0 
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
log () {
 | 
					log () {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
@ -849,6 +879,10 @@ init_vars () {
 | 
				
			|||||||
    # Check if MD5(SUM) is present on the system.
 | 
					    # Check if MD5(SUM) is present on the system.
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
    set_md5
 | 
					    set_md5
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # Chec if stat is present and works on the system if daemon mode is enabled.
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    set_stat
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
    # Is PPSS run as a daemon? Then use input locking, which is not required otherwise.
 | 
					    # Is PPSS run as a daemon? Then use input locking, which is not required otherwise.
 | 
				
			||||||
@ -1072,7 +1106,12 @@ stack_pop () {
 | 
				
			|||||||
    done
 | 
					    done
 | 
				
			||||||
    STACK="$TMP_STACK"
 | 
					    STACK="$TMP_STACK"
 | 
				
			||||||
    REGISTER="$tmp"
 | 
					    REGISTER="$tmp"
 | 
				
			||||||
    log DEBUG "Stack is $STACK"
 | 
					    if [ -z "$REGISTER" ]
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        return 1
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
}     
 | 
					}     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ec2_get_pending_nodes() {
 | 
					ec2_get_pending_nodes() {
 | 
				
			||||||
@ -2261,6 +2300,44 @@ is_item_unprocessed () {
 | 
				
			|||||||
    return $STATUS
 | 
					    return $STATUS
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is_item_file_and_unmodified () {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ITEM="$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ -e "$ITEM" ]
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        NOW=`date +%s`
 | 
				
			||||||
 | 
					        FILEDATE=`$STAT "$ITEM"`
 | 
				
			||||||
 | 
					        ELAPSED="$(expr $NOW - $FILEDATE)"
 | 
				
			||||||
 | 
					        if [ "$ELAPSED" -gt "$DAEMON_FILE_AGE" ]
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            log DEBUG "$FUNCNAME File $ITEM is aged $ELAPSED"
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            log DEBUG "$FUNCNAME File $ITEM too young $ELAPSED"
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					process_item_as_daemon () {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ITEM="$1"
 | 
				
			||||||
 | 
					    if is_item_unprocessed "$ITEM"
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        if is_item_file_and_unmodified "$ITEM"
 | 
				
			||||||
 | 
					        then
 | 
				
			||||||
 | 
					            echo "$ITEM" >> "$FIFO"
 | 
				
			||||||
 | 
					            processed_stack_push "$ITEM"
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            stack_push "$ITEM"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
daemon_listener () {
 | 
					daemon_listener () {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while true
 | 
					    while true
 | 
				
			||||||
@ -2268,13 +2345,11 @@ daemon_listener () {
 | 
				
			|||||||
        get_all_items
 | 
					        get_all_items
 | 
				
			||||||
        while get_item
 | 
					        while get_item
 | 
				
			||||||
        do
 | 
					        do
 | 
				
			||||||
            if is_item_unprocessed "$ITEM"
 | 
					            process_item_as_daemon "$ITEM"
 | 
				
			||||||
            then
 | 
					        done
 | 
				
			||||||
                log DEBUG "Daemon sending item $ITEM to fifo."
 | 
					        while stack_pop
 | 
				
			||||||
                echo "$ITEM" >> "$FIFO"
 | 
					        do 
 | 
				
			||||||
                processed_stack_push "$ITEM"
 | 
					            process_item_as_daemon "$REGISTER"  
 | 
				
			||||||
                log DEBUG "Processed items is $PROCESSED_ITEMS"
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
        sleep "$DAEMON_POLLING_INTERVAL"
 | 
					        sleep "$DAEMON_POLLING_INTERVAL"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
@ -2339,6 +2414,7 @@ listen_for_job () {
 | 
				
			|||||||
        if [ "$event" = "$START_KEY" ]
 | 
					        if [ "$event" = "$START_KEY" ]
 | 
				
			||||||
        then
 | 
					        then
 | 
				
			||||||
            decrease_active_workers
 | 
					            decrease_active_workers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            log DEBUG "Got a 'start-key' event"
 | 
					            log DEBUG "Got a 'start-key' event"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if [ "$DAEMON" = "0" ]
 | 
					            if [ "$DAEMON" = "0" ]
 | 
				
			||||||
@ -2368,7 +2444,6 @@ listen_for_job () {
 | 
				
			|||||||
        else
 | 
					        else
 | 
				
			||||||
            log DEBUG "Event is an item!"
 | 
					            log DEBUG "Event is an item!"
 | 
				
			||||||
            stack_push "$event"
 | 
					            stack_push "$event"
 | 
				
			||||||
            log DEBUG "stack after push is $STACK"
 | 
					 | 
				
			||||||
            run_command
 | 
					            run_command
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        display_progress
 | 
					        display_progress
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user