stella 0.5.3 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. data/{README.txt → README.textile} +63 -40
  2. data/Rakefile +7 -5
  3. data/bin/stella +1 -1
  4. data/bin/stella.bat +12 -0
  5. data/lib/pcaplet.rb +180 -0
  6. data/lib/stella/adapter/ab.rb +57 -33
  7. data/lib/stella/adapter/base.rb +11 -1
  8. data/lib/stella/adapter/httperf.rb +13 -10
  9. data/lib/stella/adapter/pcap_watcher.rb +221 -0
  10. data/lib/stella/adapter/proxy_watcher.rb +76 -0
  11. data/lib/stella/adapter/siege.rb +28 -11
  12. data/lib/stella/cli/agents.rb +2 -2
  13. data/lib/stella/cli/base.rb +37 -1
  14. data/lib/stella/cli/localtest.rb +1 -2
  15. data/lib/stella/cli/sysinfo.rb +17 -0
  16. data/lib/stella/cli/watch.rb +278 -0
  17. data/lib/stella/cli.rb +23 -11
  18. data/lib/stella/command/base.rb +1 -10
  19. data/lib/stella/command/localtest.rb +43 -23
  20. data/lib/stella/data/domain.rb +75 -0
  21. data/lib/stella/data/http.rb +124 -0
  22. data/lib/stella/logger.rb +16 -5
  23. data/lib/stella/storable.rb +4 -2
  24. data/lib/stella/support.rb +71 -0
  25. data/lib/stella/sysinfo.rb +247 -0
  26. data/lib/stella/test/base.rb +5 -1
  27. data/lib/stella/test/definition.rb +1 -1
  28. data/lib/stella/test/run/summary.rb +14 -4
  29. data/lib/stella/text/resource.rb +0 -1
  30. data/lib/stella.rb +28 -10
  31. data/lib/utils/domainutil.rb +47 -0
  32. data/lib/utils/fileutil.rb +22 -3
  33. data/lib/utils/httputil.rb +184 -128
  34. data/lib/utils/mathutil.rb +20 -7
  35. data/lib/win32/Console/ANSI.rb +305 -0
  36. data/lib/win32/Console.rb +970 -0
  37. data/spec/show-agents_spec.rb +0 -0
  38. data/support/kvm.h +91 -0
  39. data/support/ruby-pcap-takuma-notes.txt +19 -0
  40. data/support/ruby-pcap-takuma-patch.txt +30 -0
  41. data/support/text/en.yaml +26 -3
  42. data/vendor/frylock/README.textile +72 -0
  43. data/vendor/frylock/bin/example +170 -0
  44. data/vendor/frylock/frylock.gemspec +18 -0
  45. data/vendor/frylock/lib/frylock/exceptions.rb +24 -0
  46. data/vendor/frylock/lib/frylock.rb +232 -0
  47. data/vendor/frylock/test/command_test.rb +33 -0
  48. data/vendor/hitimes-0.4.0/HISTORY +28 -0
  49. data/vendor/hitimes-0.4.0/LICENSE.txt +19 -0
  50. data/vendor/hitimes-0.4.0/README +80 -0
  51. data/vendor/hitimes-0.4.0/Rakefile +63 -0
  52. data/vendor/hitimes-0.4.0/examples/benchmarks.rb +86 -0
  53. data/vendor/hitimes-0.4.0/examples/stats.rb +29 -0
  54. data/vendor/hitimes-0.4.0/ext/extconf.rb +15 -0
  55. data/vendor/hitimes-0.4.0/ext/hitimes_ext.c +21 -0
  56. data/vendor/hitimes-0.4.0/ext/hitimes_instant_clock_gettime.c +20 -0
  57. data/vendor/hitimes-0.4.0/ext/hitimes_instant_osx.c +16 -0
  58. data/vendor/hitimes-0.4.0/ext/hitimes_instant_windows.c +27 -0
  59. data/vendor/hitimes-0.4.0/ext/hitimes_interval.c +340 -0
  60. data/vendor/hitimes-0.4.0/ext/hitimes_interval.h +73 -0
  61. data/vendor/hitimes-0.4.0/ext/hitimes_stats.c +242 -0
  62. data/vendor/hitimes-0.4.0/ext/hitimes_stats.h +30 -0
  63. data/vendor/hitimes-0.4.0/ext/rbconfig-mingw.rb +178 -0
  64. data/vendor/hitimes-0.4.0/ext/rbconfig.rb +178 -0
  65. data/vendor/hitimes-0.4.0/gemspec.rb +54 -0
  66. data/vendor/hitimes-0.4.0/lib/hitimes/mutexed_stats.rb +23 -0
  67. data/vendor/hitimes-0.4.0/lib/hitimes/paths.rb +54 -0
  68. data/vendor/hitimes-0.4.0/lib/hitimes/stats.rb +29 -0
  69. data/vendor/hitimes-0.4.0/lib/hitimes/timer.rb +223 -0
  70. data/vendor/hitimes-0.4.0/lib/hitimes/version.rb +42 -0
  71. data/vendor/hitimes-0.4.0/lib/hitimes.rb +24 -0
  72. data/vendor/hitimes-0.4.0/spec/interval_spec.rb +115 -0
  73. data/vendor/hitimes-0.4.0/spec/mutex_stats_spec.rb +34 -0
  74. data/vendor/hitimes-0.4.0/spec/paths_spec.rb +14 -0
  75. data/vendor/hitimes-0.4.0/spec/spec_helper.rb +6 -0
  76. data/vendor/hitimes-0.4.0/spec/stats_spec.rb +72 -0
  77. data/vendor/hitimes-0.4.0/spec/timer_spec.rb +105 -0
  78. data/vendor/hitimes-0.4.0/spec/version_spec.rb +27 -0
  79. data/vendor/hitimes-0.4.0/tasks/announce.rake +39 -0
  80. data/vendor/hitimes-0.4.0/tasks/config.rb +107 -0
  81. data/vendor/hitimes-0.4.0/tasks/distribution.rake +53 -0
  82. data/vendor/hitimes-0.4.0/tasks/documentation.rake +33 -0
  83. data/vendor/hitimes-0.4.0/tasks/extension.rake +64 -0
  84. data/vendor/hitimes-0.4.0/tasks/rspec.rake +31 -0
  85. data/vendor/hitimes-0.4.0/tasks/rubyforge.rake +52 -0
  86. data/vendor/hitimes-0.4.0/tasks/utils.rb +80 -0
  87. data/vendor/useragent/lib/user_agent.rb +1 -1
  88. metadata +87 -8
@@ -0,0 +1,178 @@
1
+
2
+ # This file was created by mkconfig.rb when ruby was built. Any
3
+ # changes made to this file will be lost the next time ruby is built.
4
+
5
+ module Config
6
+ RUBY_VERSION == "1.8.6" or
7
+ raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
8
+
9
+ TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mingw32")
10
+ DESTDIR = '' unless defined? DESTDIR
11
+ CONFIG = {}
12
+ CONFIG["DESTDIR"] = DESTDIR
13
+ CONFIG["INSTALL"] = '/opt/local/bin/ginstall -c'
14
+ CONFIG["prefix"] = (TOPDIR || DESTDIR + "#{ENV["HOME"]}/ruby-mingw32")
15
+ CONFIG["EXEEXT"] = ".exe"
16
+ CONFIG["ruby_install_name"] = "ruby"
17
+ CONFIG["RUBY_INSTALL_NAME"] = "ruby"
18
+ CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
19
+ CONFIG["SHELL"] = "/bin/sh"
20
+ CONFIG["PATH_SEPARATOR"] = ":"
21
+ CONFIG["PACKAGE_NAME"] = ""
22
+ CONFIG["PACKAGE_TARNAME"] = ""
23
+ CONFIG["PACKAGE_VERSION"] = ""
24
+ CONFIG["PACKAGE_STRING"] = ""
25
+ CONFIG["PACKAGE_BUGREPORT"] = ""
26
+ CONFIG["exec_prefix"] = "$(prefix)"
27
+ CONFIG["bindir"] = "$(exec_prefix)/bin"
28
+ CONFIG["sbindir"] = "$(exec_prefix)/sbin"
29
+ CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
30
+ CONFIG["datarootdir"] = "$(prefix)/share"
31
+ CONFIG["datadir"] = "$(datarootdir)"
32
+ CONFIG["sysconfdir"] = "$(prefix)/etc"
33
+ CONFIG["sharedstatedir"] = "$(prefix)/com"
34
+ CONFIG["localstatedir"] = "$(prefix)/var"
35
+ CONFIG["includedir"] = "$(prefix)/include"
36
+ CONFIG["oldincludedir"] = "/usr/include"
37
+ CONFIG["docdir"] = "$(datarootdir)/doc/$(PACKAGE)"
38
+ CONFIG["infodir"] = "$(datarootdir)/info"
39
+ CONFIG["htmldir"] = "$(docdir)"
40
+ CONFIG["dvidir"] = "$(docdir)"
41
+ CONFIG["pdfdir"] = "$(docdir)"
42
+ CONFIG["psdir"] = "$(docdir)"
43
+ CONFIG["libdir"] = "$(exec_prefix)/lib"
44
+ CONFIG["localedir"] = "$(datarootdir)/locale"
45
+ CONFIG["mandir"] = "$(datarootdir)/man"
46
+ CONFIG["ECHO_C"] = ""
47
+ CONFIG["ECHO_N"] = "-n"
48
+ CONFIG["ECHO_T"] = ""
49
+ CONFIG["LIBS"] = "-lwsock32 "
50
+ CONFIG["build_alias"] = "i686-darwin9.2.2"
51
+ CONFIG["host_alias"] = "i386-mingw32"
52
+ CONFIG["target_alias"] = "i386-mingw32"
53
+ CONFIG["MAJOR"] = "1"
54
+ CONFIG["MINOR"] = "8"
55
+ CONFIG["TEENY"] = "6"
56
+ CONFIG["build"] = "i686-pc-darwin9.2.2"
57
+ CONFIG["build_cpu"] = "i686"
58
+ CONFIG["build_vendor"] = "pc"
59
+ CONFIG["build_os"] = "darwin9.2.2"
60
+ CONFIG["host"] = "i386-pc-mingw32"
61
+ CONFIG["host_cpu"] = "i386"
62
+ CONFIG["host_vendor"] = "pc"
63
+ CONFIG["host_os"] = "mingw32"
64
+ CONFIG["target"] = "i386-pc-mingw32"
65
+ CONFIG["target_cpu"] = "i386"
66
+ CONFIG["target_vendor"] = "pc"
67
+ CONFIG["target_os"] = "mingw32"
68
+ CONFIG["CC"] = "i386-mingw32-gcc"
69
+ CONFIG["CFLAGS"] = "-g -O2 "
70
+ CONFIG["LDFLAGS"] = "-L. "
71
+ CONFIG["CPPFLAGS"] = ""
72
+ CONFIG["OBJEXT"] = "o"
73
+ CONFIG["CPP"] = "i386-mingw32-gcc -E"
74
+ CONFIG["GREP"] = "/usr/bin/grep"
75
+ CONFIG["EGREP"] = "/usr/bin/grep -E"
76
+ CONFIG["GNU_LD"] = "yes"
77
+ CONFIG["CPPOUTFILE"] = "-o conftest.i"
78
+ CONFIG["OUTFLAG"] = "-o "
79
+ CONFIG["YACC"] = "bison -y"
80
+ CONFIG["YFLAGS"] = ""
81
+ CONFIG["RANLIB"] = "i386-mingw32-ranlib"
82
+ CONFIG["AR"] = "i386-mingw32-ar"
83
+ CONFIG["AS"] = "i386-mingw32-as"
84
+ CONFIG["ASFLAGS"] = ""
85
+ CONFIG["NM"] = "i386-mingw32-nm"
86
+ CONFIG["WINDRES"] = "i386-mingw32-windres"
87
+ CONFIG["DLLWRAP"] = "i386-mingw32-dllwrap"
88
+ CONFIG["OBJDUMP"] = "i386-mingw32-objdump"
89
+ CONFIG["LN_S"] = "ln -s"
90
+ CONFIG["SET_MAKE"] = ""
91
+ CONFIG["INSTALL_PROGRAM"] = "$(INSTALL)"
92
+ CONFIG["INSTALL_SCRIPT"] = "$(INSTALL)"
93
+ CONFIG["INSTALL_DATA"] = "$(INSTALL) -m 644"
94
+ CONFIG["RM"] = "rm -f"
95
+ CONFIG["CP"] = "cp"
96
+ CONFIG["MAKEDIRS"] = "mkdir -p"
97
+ CONFIG["ALLOCA"] = ""
98
+ CONFIG["DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all"
99
+ CONFIG["ARCH_FLAG"] = ""
100
+ CONFIG["STATIC"] = ""
101
+ CONFIG["CCDLFLAGS"] = ""
102
+ CONFIG["LDSHARED"] = "i386-mingw32-gcc -shared -s"
103
+ CONFIG["DLEXT"] = "so"
104
+ CONFIG["DLEXT2"] = "dll"
105
+ CONFIG["LIBEXT"] = "a"
106
+ CONFIG["LINK_SO"] = ""
107
+ CONFIG["LIBPATHFLAG"] = " -L\"%s\""
108
+ CONFIG["RPATHFLAG"] = ""
109
+ CONFIG["LIBPATHENV"] = ""
110
+ CONFIG["TRY_LINK"] = ""
111
+ CONFIG["STRIP"] = "strip"
112
+ CONFIG["EXTSTATIC"] = ""
113
+ CONFIG["setup"] = "Setup"
114
+ CONFIG["MINIRUBY"] = "ruby -I#{ENV['HOME']}/pkgs/ruby-1.8.6-p114 -rfake"
115
+ CONFIG["PREP"] = "fake.rb"
116
+ CONFIG["RUNRUBY"] = "$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`"
117
+ CONFIG["EXTOUT"] = ".ext"
118
+ CONFIG["ARCHFILE"] = ""
119
+ CONFIG["RDOCTARGET"] = ""
120
+ CONFIG["XCFLAGS"] = " -DRUBY_EXPORT"
121
+ CONFIG["XLDFLAGS"] = " -Wl,--stack,0x02000000"
122
+ CONFIG["LIBRUBY_LDSHARED"] = "i386-mingw32-gcc -shared -s"
123
+ CONFIG["LIBRUBY_DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBRUBY)"
124
+ CONFIG["rubyw_install_name"] = "rubyw"
125
+ CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
126
+ CONFIG["LIBRUBY_A"] = "lib$(RUBY_SO_NAME)-static.a"
127
+ CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
128
+ CONFIG["LIBRUBY_ALIASES"] = ""
129
+ CONFIG["LIBRUBY"] = "lib$(LIBRUBY_SO).a"
130
+ CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
131
+ CONFIG["LIBRUBYARG_STATIC"] = "-l$(RUBY_SO_NAME)-static"
132
+ CONFIG["LIBRUBYARG_SHARED"] = "-l$(RUBY_SO_NAME)"
133
+ CONFIG["SOLIBS"] = "$(LIBS)"
134
+ CONFIG["DLDLIBS"] = ""
135
+ CONFIG["ENABLE_SHARED"] = "yes"
136
+ CONFIG["MAINLIBS"] = ""
137
+ CONFIG["COMMON_LIBS"] = "m"
138
+ CONFIG["COMMON_MACROS"] = ""
139
+ CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"
140
+ CONFIG["EXPORT_PREFIX"] = ""
141
+ CONFIG["MAKEFILES"] = "Makefile GNUmakefile"
142
+ CONFIG["arch"] = "i386-mingw32"
143
+ CONFIG["sitearch"] = "i386-msvcrt"
144
+ CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
145
+ CONFIG["configure_args"] = " '--host=i386-mingw32' '--target=i386-mingw32' '--build=i686-darwin9.2.2' '--prefix=#{ENV['HOME']}/ruby-mingw32' 'build_alias=i686-darwin9.2.2' 'host_alias=i386-mingw32' 'target_alias=i386-mingw32'"
146
+ CONFIG["NROFF"] = "/usr/bin/nroff"
147
+ CONFIG["MANTYPE"] = "doc"
148
+ CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
149
+ CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
150
+ CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
151
+ CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
152
+ CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
153
+ CONFIG["topdir"] = File.dirname(__FILE__)
154
+ MAKEFILE_CONFIG = {}
155
+ CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
156
+ def Config::expand(val, config = CONFIG)
157
+ val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
158
+ if !(v = $1 || $2)
159
+ '$'
160
+ elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
161
+ pat, sub = $1, $2
162
+ config[v] = false
163
+ Config::expand(key, config)
164
+ config[v] = key
165
+ key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
166
+ key
167
+ else
168
+ var
169
+ end
170
+ end
171
+ val
172
+ end
173
+ CONFIG.each_value do |val|
174
+ Config::expand(val)
175
+ end
176
+ end
177
+ RbConfig = Config # compatibility for ruby-1.9
178
+ CROSS_COMPILING = nil unless defined? CROSS_COMPILING
@@ -0,0 +1,178 @@
1
+
2
+ # This file was created by mkconfig.rb when ruby was built. Any
3
+ # changes made to this file will be lost the next time ruby is built.
4
+
5
+ module Config
6
+ RUBY_VERSION == "1.8.6" or
7
+ raise "ruby lib version (1.8.6) doesn't match executable version (#{RUBY_VERSION})"
8
+
9
+ TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mingw32")
10
+ DESTDIR = '' unless defined? DESTDIR
11
+ CONFIG = {}
12
+ CONFIG["DESTDIR"] = DESTDIR
13
+ CONFIG["INSTALL"] = '/opt/local/bin/ginstall -c'
14
+ CONFIG["prefix"] = (TOPDIR || DESTDIR + "#{ENV["HOME"]}/ruby-mingw32")
15
+ CONFIG["EXEEXT"] = ".exe"
16
+ CONFIG["ruby_install_name"] = "ruby"
17
+ CONFIG["RUBY_INSTALL_NAME"] = "ruby"
18
+ CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18"
19
+ CONFIG["SHELL"] = "/bin/sh"
20
+ CONFIG["PATH_SEPARATOR"] = ":"
21
+ CONFIG["PACKAGE_NAME"] = ""
22
+ CONFIG["PACKAGE_TARNAME"] = ""
23
+ CONFIG["PACKAGE_VERSION"] = ""
24
+ CONFIG["PACKAGE_STRING"] = ""
25
+ CONFIG["PACKAGE_BUGREPORT"] = ""
26
+ CONFIG["exec_prefix"] = "$(prefix)"
27
+ CONFIG["bindir"] = "$(exec_prefix)/bin"
28
+ CONFIG["sbindir"] = "$(exec_prefix)/sbin"
29
+ CONFIG["libexecdir"] = "$(exec_prefix)/libexec"
30
+ CONFIG["datarootdir"] = "$(prefix)/share"
31
+ CONFIG["datadir"] = "$(datarootdir)"
32
+ CONFIG["sysconfdir"] = "$(prefix)/etc"
33
+ CONFIG["sharedstatedir"] = "$(prefix)/com"
34
+ CONFIG["localstatedir"] = "$(prefix)/var"
35
+ CONFIG["includedir"] = "$(prefix)/include"
36
+ CONFIG["oldincludedir"] = "/usr/include"
37
+ CONFIG["docdir"] = "$(datarootdir)/doc/$(PACKAGE)"
38
+ CONFIG["infodir"] = "$(datarootdir)/info"
39
+ CONFIG["htmldir"] = "$(docdir)"
40
+ CONFIG["dvidir"] = "$(docdir)"
41
+ CONFIG["pdfdir"] = "$(docdir)"
42
+ CONFIG["psdir"] = "$(docdir)"
43
+ CONFIG["libdir"] = "$(exec_prefix)/lib"
44
+ CONFIG["localedir"] = "$(datarootdir)/locale"
45
+ CONFIG["mandir"] = "$(datarootdir)/man"
46
+ CONFIG["ECHO_C"] = ""
47
+ CONFIG["ECHO_N"] = "-n"
48
+ CONFIG["ECHO_T"] = ""
49
+ CONFIG["LIBS"] = "-lwsock32 "
50
+ CONFIG["build_alias"] = "i686-darwin9.2.2"
51
+ CONFIG["host_alias"] = "i386-mingw32"
52
+ CONFIG["target_alias"] = "i386-mingw32"
53
+ CONFIG["MAJOR"] = "1"
54
+ CONFIG["MINOR"] = "8"
55
+ CONFIG["TEENY"] = "6"
56
+ CONFIG["build"] = "i686-pc-darwin9.2.2"
57
+ CONFIG["build_cpu"] = "i686"
58
+ CONFIG["build_vendor"] = "pc"
59
+ CONFIG["build_os"] = "darwin9.2.2"
60
+ CONFIG["host"] = "i386-pc-mingw32"
61
+ CONFIG["host_cpu"] = "i386"
62
+ CONFIG["host_vendor"] = "pc"
63
+ CONFIG["host_os"] = "mingw32"
64
+ CONFIG["target"] = "i386-pc-mingw32"
65
+ CONFIG["target_cpu"] = "i386"
66
+ CONFIG["target_vendor"] = "pc"
67
+ CONFIG["target_os"] = "mingw32"
68
+ CONFIG["CC"] = "i386-mingw32-gcc"
69
+ CONFIG["CFLAGS"] = "-g -O2 "
70
+ CONFIG["LDFLAGS"] = "-L. "
71
+ CONFIG["CPPFLAGS"] = ""
72
+ CONFIG["OBJEXT"] = "o"
73
+ CONFIG["CPP"] = "i386-mingw32-gcc -E"
74
+ CONFIG["GREP"] = "/usr/bin/grep"
75
+ CONFIG["EGREP"] = "/usr/bin/grep -E"
76
+ CONFIG["GNU_LD"] = "yes"
77
+ CONFIG["CPPOUTFILE"] = "-o conftest.i"
78
+ CONFIG["OUTFLAG"] = "-o "
79
+ CONFIG["YACC"] = "bison -y"
80
+ CONFIG["YFLAGS"] = ""
81
+ CONFIG["RANLIB"] = "i386-mingw32-ranlib"
82
+ CONFIG["AR"] = "i386-mingw32-ar"
83
+ CONFIG["AS"] = "i386-mingw32-as"
84
+ CONFIG["ASFLAGS"] = ""
85
+ CONFIG["NM"] = "i386-mingw32-nm"
86
+ CONFIG["WINDRES"] = "i386-mingw32-windres"
87
+ CONFIG["DLLWRAP"] = "i386-mingw32-dllwrap"
88
+ CONFIG["OBJDUMP"] = "i386-mingw32-objdump"
89
+ CONFIG["LN_S"] = "ln -s"
90
+ CONFIG["SET_MAKE"] = ""
91
+ CONFIG["INSTALL_PROGRAM"] = "$(INSTALL)"
92
+ CONFIG["INSTALL_SCRIPT"] = "$(INSTALL)"
93
+ CONFIG["INSTALL_DATA"] = "$(INSTALL) -m 644"
94
+ CONFIG["RM"] = "rm -f"
95
+ CONFIG["CP"] = "cp"
96
+ CONFIG["MAKEDIRS"] = "mkdir -p"
97
+ CONFIG["ALLOCA"] = ""
98
+ CONFIG["DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all"
99
+ CONFIG["ARCH_FLAG"] = ""
100
+ CONFIG["STATIC"] = ""
101
+ CONFIG["CCDLFLAGS"] = ""
102
+ CONFIG["LDSHARED"] = "i386-mingw32-gcc -shared -s"
103
+ CONFIG["DLEXT"] = "so"
104
+ CONFIG["DLEXT2"] = "dll"
105
+ CONFIG["LIBEXT"] = "a"
106
+ CONFIG["LINK_SO"] = ""
107
+ CONFIG["LIBPATHFLAG"] = " -L\"%s\""
108
+ CONFIG["RPATHFLAG"] = ""
109
+ CONFIG["LIBPATHENV"] = ""
110
+ CONFIG["TRY_LINK"] = ""
111
+ CONFIG["STRIP"] = "strip"
112
+ CONFIG["EXTSTATIC"] = ""
113
+ CONFIG["setup"] = "Setup"
114
+ CONFIG["MINIRUBY"] = "ruby -I#{ENV['HOME']}/pkgs/ruby-1.8.6-p114 -rfake"
115
+ CONFIG["PREP"] = "fake.rb"
116
+ CONFIG["RUNRUBY"] = "$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`"
117
+ CONFIG["EXTOUT"] = ".ext"
118
+ CONFIG["ARCHFILE"] = ""
119
+ CONFIG["RDOCTARGET"] = ""
120
+ CONFIG["XCFLAGS"] = " -DRUBY_EXPORT"
121
+ CONFIG["XLDFLAGS"] = " -Wl,--stack,0x02000000"
122
+ CONFIG["LIBRUBY_LDSHARED"] = "i386-mingw32-gcc -shared -s"
123
+ CONFIG["LIBRUBY_DLDFLAGS"] = " -Wl,--enable-auto-image-base,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBRUBY)"
124
+ CONFIG["rubyw_install_name"] = "rubyw"
125
+ CONFIG["RUBYW_INSTALL_NAME"] = "rubyw"
126
+ CONFIG["LIBRUBY_A"] = "lib$(RUBY_SO_NAME)-static.a"
127
+ CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll"
128
+ CONFIG["LIBRUBY_ALIASES"] = ""
129
+ CONFIG["LIBRUBY"] = "lib$(LIBRUBY_SO).a"
130
+ CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)"
131
+ CONFIG["LIBRUBYARG_STATIC"] = "-l$(RUBY_SO_NAME)-static"
132
+ CONFIG["LIBRUBYARG_SHARED"] = "-l$(RUBY_SO_NAME)"
133
+ CONFIG["SOLIBS"] = "$(LIBS)"
134
+ CONFIG["DLDLIBS"] = ""
135
+ CONFIG["ENABLE_SHARED"] = "yes"
136
+ CONFIG["MAINLIBS"] = ""
137
+ CONFIG["COMMON_LIBS"] = "m"
138
+ CONFIG["COMMON_MACROS"] = ""
139
+ CONFIG["COMMON_HEADERS"] = "windows.h winsock.h"
140
+ CONFIG["EXPORT_PREFIX"] = ""
141
+ CONFIG["MAKEFILES"] = "Makefile GNUmakefile"
142
+ CONFIG["arch"] = "i386-mingw32"
143
+ CONFIG["sitearch"] = "i386-msvcrt"
144
+ CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby"
145
+ CONFIG["configure_args"] = " '--host=i386-mingw32' '--target=i386-mingw32' '--build=i686-darwin9.2.2' '--prefix=#{ENV['HOME']}/ruby-mingw32' 'build_alias=i686-darwin9.2.2' 'host_alias=i386-mingw32' 'target_alias=i386-mingw32'"
146
+ CONFIG["NROFF"] = "/usr/bin/nroff"
147
+ CONFIG["MANTYPE"] = "doc"
148
+ CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
149
+ CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
150
+ CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
151
+ CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
152
+ CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
153
+ CONFIG["topdir"] = File.dirname(__FILE__)
154
+ MAKEFILE_CONFIG = {}
155
+ CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
156
+ def Config::expand(val, config = CONFIG)
157
+ val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var|
158
+ if !(v = $1 || $2)
159
+ '$'
160
+ elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
161
+ pat, sub = $1, $2
162
+ config[v] = false
163
+ Config::expand(key, config)
164
+ config[v] = key
165
+ key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
166
+ key
167
+ else
168
+ var
169
+ end
170
+ end
171
+ val
172
+ end
173
+ CONFIG.each_value do |val|
174
+ Config::expand(val)
175
+ end
176
+ end
177
+ RbConfig = Config # compatibility for ruby-1.9
178
+ CROSS_COMPILING = nil unless defined? CROSS_COMPILING
@@ -0,0 +1,54 @@
1
+ require 'rubygems'
2
+ require 'hitimes/version'
3
+ require 'tasks/config'
4
+
5
+ Hitimes::GEM_SPEC = Gem::Specification.new do |spec|
6
+ proj = Configuration.for('project')
7
+ spec.name = proj.name
8
+ spec.version = Hitimes::VERSION
9
+
10
+ spec.author = proj.author
11
+ spec.email = proj.email
12
+ spec.homepage = proj.homepage
13
+ spec.summary = proj.summary
14
+ spec.description = proj.description
15
+ spec.platform = Gem::Platform::RUBY
16
+
17
+
18
+ pkg = Configuration.for('packaging')
19
+ spec.files = pkg.files.all
20
+ spec.executables = pkg.files.bin.collect { |b| File.basename(b) }
21
+
22
+ # add dependencies here
23
+ spec.add_dependency("rake", ">= 0.8.1")
24
+ spec.add_dependency("configuration", ">= 0.0.5")
25
+
26
+ if ext_conf = Configuration.for_if_exist?("extension") then
27
+ spec.extensions << ext_conf.configs
28
+ spec.require_paths << 'ext'
29
+ spec.extensions.flatten!
30
+ end
31
+
32
+ if rdoc = Configuration.for_if_exist?('rdoc') then
33
+ spec.has_rdoc = true
34
+ spec.extra_rdoc_files = pkg.files.rdoc
35
+ spec.rdoc_options = rdoc.options + [ "--main" , rdoc.main_page ]
36
+ else
37
+ spec.has_rdoc = false
38
+ end
39
+
40
+ if test = Configuration.for_if_exist?('testing') then
41
+ spec.test_files = test.files
42
+ end
43
+
44
+ if rf = Configuration.for_if_exist?('rubyforge') then
45
+ spec.rubyforge_project = rf.project
46
+ end
47
+ end
48
+
49
+ Hitimes::GEM_SPEC_WIN = Hitimes::GEM_SPEC.clone
50
+ Hitimes::GEM_SPEC_WIN.platform = ::Gem::Platform.new( "i386-mswin32_60" )
51
+ Hitimes::GEM_SPEC_WIN.extensions = []
52
+ Hitimes::GEM_SPEC_WIN.files += ["lib/hitimes_ext.so"]
53
+
54
+ Hitimes::SPECS = [ Hitimes::GEM_SPEC, Hitimes::GEM_SPEC_WIN ]
@@ -0,0 +1,23 @@
1
+ require 'hitimes'
2
+ require 'thread'
3
+
4
+ module Hitimes
5
+ class MutexedStats < Stats
6
+ def initialize
7
+ @mutex = Mutex.new
8
+ end
9
+
10
+ # call-seq:
11
+ # mutex_stat.update( val ) -> nil
12
+ #
13
+ # Update the running stats with the new value in a threadsafe manner.
14
+ #
15
+ def update( value )
16
+ @mutex.synchronize do
17
+ super( value )
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+
@@ -0,0 +1,54 @@
1
+ #--
2
+ # Copyright (c) 2008 Jeremy Hinegardner
3
+ # All rights reserved. See LICENSE and/or COPYING for details.
4
+ #++
5
+ #
6
+ module Hitimes
7
+ #
8
+ # Access to various paths inside the project programatically
9
+ #
10
+ module Paths
11
+ #
12
+ # :call-seq:
13
+ # Hitimes::Paths.root_dir -> String
14
+ #
15
+ # Returns The full expanded path of the parent directory of +lib+
16
+ # going up the path from the current file. A trailing File::SEPARATOR
17
+ # is guaranteed.
18
+ #
19
+ def self.root_dir
20
+ unless @root_dir
21
+ path_parts = ::File.expand_path(__FILE__).split(::File::SEPARATOR)
22
+ lib_index = path_parts.rindex("lib")
23
+ @root_dir = path_parts[0...lib_index].join(::File::SEPARATOR) + ::File::SEPARATOR
24
+ end
25
+ return @root_dir
26
+ end
27
+
28
+ #
29
+ # :call-seq:
30
+ # Hitimes::Paths.lib_path( *args ) -> String
31
+ #
32
+ # Returns The full expanded path of the +lib+ directory below
33
+ # _root_dir_. All parameters passed in are joined onto the
34
+ # result. A trailing File::SEPARATOR is guaranteed if
35
+ # _args_ are *not* present.
36
+ #
37
+ def self.lib_path(*args)
38
+ self.sub_path("lib", *args)
39
+ end
40
+
41
+ #
42
+ # :call-seq:
43
+ # Hitimes::Paths.sub_path( sub, *args ) -> String
44
+ #
45
+ # Returns the full expanded path of the +sub+ directory below _root_dir. All
46
+ # _arg_ parameters passed in are joined onto the result. A trailing
47
+ # File::SEPARATOR is guaranteed if _args_ are *not* present.
48
+ #
49
+ def self.sub_path(sub,*args)
50
+ sp = ::File.join(root_dir, sub) + File::SEPARATOR
51
+ sp = ::File.join(sp, *args) if args
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,29 @@
1
+ module Hitimes
2
+ class Stats
3
+ # A list of the available stats
4
+ STATS = %w[ count max mean min rate stddev sum ]
5
+
6
+ #
7
+ # call-seq:
8
+ # stat.to_hash -> Hash
9
+ # stat.to_hash( %w[ count max mean ]) -> Hash
10
+ #
11
+ # return a hash of the stats. By default this returns a hash of all stats
12
+ # but passing in an array of items will limit the stats returned to only
13
+ # those in the Array.
14
+ #
15
+ # If passed in an empty array or nil to to_hash then STATS is assumed to be
16
+ # the list of stats to return in the hash.
17
+ #
18
+ def to_hash( *args )
19
+ h = {}
20
+ args = [ args ].flatten
21
+ args = STATS if args.empty?
22
+ args.each do |meth|
23
+ h[meth] = self.send( meth )
24
+ end
25
+ return h
26
+ end
27
+
28
+ end
29
+ end