This file is indexed.

/usr/share/doc/libdrmaa1.0-ruby/examples/ruby/stream_and_trap.rb is in libdrmaa1.0-ruby 8.1.9+dfsg-7build1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
#!/usr/bin/ruby

#########################################################################
#
#  The Contents of this file are made available subject to the terms of
#  the Sun Industry Standards Source License Version 1.2
#
#  Sun Microsystems Inc., March, 2006
#
#
#  Sun Industry Standards Source License Version 1.2
#  =================================================
#  The contents of this file are subject to the Sun Industry Standards
#  Source License Version 1.2 (the "License"); You may not use this file
#  except in compliance with the License. You may obtain a copy of the
#  License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
#
#  Software provided under this License is provided on an "AS IS" basis,
#  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
#  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
#  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
#  See the License for the specific provisions governing your rights and
#  obligations concerning the Software.
#
#   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
#
#   Copyright: 2006 by Sun Microsystems, Inc.
#
#   All Rights Reserved.
#
#########################################################################


require 'drmaa'

class Sleeper < DRMAA::JobTemplate
	def initialize
		super
		self.command = "/bin/sleep"
		self.arg     = ["1"]
		self.stdout  = ":/dev/null"
		self.join    = true
	end
end


$terminate_session = $terminate_program = false
def handle_signal
	if ! $terminate_session 
		$terminate_session = true
	elsif ! $terminate_program 
		$terminate_program = true
	end
end
trap("INT") { handle_signal }
trap("TERM") { handle_signal }

session = DRMAA::Session.new

# causes DRMAA::Session:run() and DRMAA::Session:run_bulk()
# to sleep and retry in case of DRMAA::DRMAATryAgain. 
# That way we implement job streaming.
session.retry = 5

t = Sleeper.new

jobs = Array.new
for i in 1 .. 20 do
	job = session.run(t)
	puts "job: " + job
	jobs << job
	break if $terminate_session
end
for i in 1 .. 10
	bulk = session.run_bulk(t, 1, 2)
	bulk.each { |job| puts "job: " + job }
	jobs += bulk
	break if $terminate_session
end

while jobs.size > 0 do
	info = session.wait_any(1)
	if ! info.nil?
		if ! info.wifexited?
			puts "failed: " + info.job
		else	
			puts info.job + " returned with " + info.wexitstatus.to_s
		end
		jobs.delete(info.job)
	else
		if $terminate_program
			jobs.clear
		elsif $terminate_session
			session.terminate
		end
	end
end

exit 0