Class: Aspera::NodeSimulator
- Inherits:
-
Object
- Object
- Aspera::NodeSimulator
- Defined in:
- lib/aspera/node_simulator.rb
Instance Method Summary collapse
- #all_sessions ⇒ Object
-
#initialize ⇒ NodeSimulator
constructor
A new instance of NodeSimulator.
-
#job_to_transfer(job_id) ⇒ Object
status: (‘waiting’, ‘partially_completed’, ‘unknown’, ‘waiting(read error)’,] ‘running’, ‘completed’, ‘failed’.
-
#process_event(event) ⇒ Object
Process event from management port.
- #start(ts) ⇒ Object
Constructor Details
#initialize ⇒ NodeSimulator
Returns a new instance of NodeSimulator.
11 12 13 14 |
# File 'lib/aspera/node_simulator.rb', line 11 def initialize @agent = Agent::Direct.new(management_cb: ->(event){process_event(event)}) @sessions = {} end |
Instance Method Details
#all_sessions ⇒ Object
20 21 22 |
# File 'lib/aspera/node_simulator.rb', line 20 def all_sessions @agent.sessions.map { |session| session[:job_id] }.uniq.each.map{|job_id|job_to_transfer(job_id)} end |
#job_to_transfer(job_id) ⇒ Object
status: (‘waiting’, ‘partially_completed’, ‘unknown’, ‘waiting(read error)’,] ‘running’, ‘completed’, ‘failed’
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/aspera/node_simulator.rb', line 25 def job_to_transfer(job_id) jobs = @agent.sessions_by_job(job_id) ts = nil sessions = jobs.map do |j| ts ||= j[:ts] { id: j[:id], client_node_id: '', server_node_id: '2bbdcc39-f789-4d47-8163-6767fc14f421', client_ip_address: '192.168.0.100', server_ip_address: '5.10.114.4', status: 'running', retry_timeout: 3600, retry_count: 0, start_time_usec: 1701094040000000, end_time_usec: nil, elapsed_usec: 405312, bytes_transferred: 26, bytes_written: 26, bytes_lost: 0, files_completed: 1, directories_completed: 0, target_rate_kbps: 500000, min_rate_kbps: 0, calc_rate_kbps: 9900, network_delay_usec: 40000, avg_rate_kbps: 0.51, error_code: 0, error_desc: '', source_statistics: { args_scan_attempted: 1, args_scan_completed: 1, paths_scan_attempted: 1, paths_scan_failed: 0, paths_scan_skipped: 0, paths_scan_excluded: 0, dirs_scan_completed: 0, files_scan_completed: 1, dirs_xfer_attempted: 0, dirs_xfer_fail: 0, files_xfer_attempted: 1, files_xfer_fail: 0, files_xfer_noxfer: 0 }, precalc: { enabled: true, status: 'ready', bytes_expected: 0, directories_expected: 0, files_expected: 0, files_excluded: 0, files_special: 0, files_failed: 1 } } end ts ||= {} result = { id: job_id, status: 'running', start_spec: ts, sessions: sessions, bytes_transferred: 26, bytes_written: 26, bytes_lost: 0, avg_rate_kbps: 0.51, files_completed: 1, files_skipped: 0, directories_completed: 0, start_time_usec: 1701094040000000, end_time_usec: 1701094040405312, elapsed_usec: 405312, error_code: 0, error_desc: '', precalc: { status: 'ready', bytes_expected: 0, files_expected: 0, directories_expected: 0, files_special: 0, files_failed: 1 }, files: [{ id: 'd1b5c112-82b75425-860745fc-93851671-64541bdd', path: '/workspaces/45071/packages/bYA_ilq73g.asp-package/contents/data_file.bin', start_time_usec: 1701094040000000, elapsed_usec: 105616, end_time_usec: 1701094040001355, status: 'completed', error_code: 0, error_desc: '', size: 26, type: 'file', checksum_type: 'none', checksum: nil, start_byte: 0, bytes_written: 26, session_id: 'bafc72b8-366c-4501-8095-47208183d6b8'}] } Log.log.trace2{Log.dump(:job, result)} return result end |
#process_event(event) ⇒ Object
Process event from management port
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/aspera/node_simulator.rb', line 129 def process_event(event) case event['Type'] when 'NOP' then Aspera.Log.debug{"event not managed: #{event['Type']}"} # rubocop:disable Lint/DuplicateBranch when 'START' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'QUERY' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'QUERYRSP' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'STATS' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'STOP' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'ERROR' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'CANCEL' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'DONE' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'RATE' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'FILEERROR' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'SESSION' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'NOTIFICATION' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'INIT' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'VLINK' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'PUT' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'WRITE' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'CLOSE' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'SKIP' then Aspera.Log.debug{"event not managed: #{event['Type']}"} when 'ARGSTOP' then Aspera.Log.debug{"event not managed: #{event['Type']}"} # rubocop:enable Lint/DuplicateBranch else Aspera.error_unreachable_line end end |
#start(ts) ⇒ Object
16 17 18 |
# File 'lib/aspera/node_simulator.rb', line 16 def start(ts) @agent.start_transfer(ts) end |