oboe 2.1.3 → 2.1.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.
@@ -0,0 +1,99 @@
1
+
2
+ # oboe 2.1.3 (07/16/13)
3
+
4
+ * Allow _Access Key_ assignment via Environment variable: TRACEVIEW_CUUID
5
+
6
+ # oboe 2.1.1 (07/04/13)
7
+
8
+ * The gem now logs via a standard Ruby logger: Oboe.logger
9
+ * Add in rspec tests
10
+ * JRuby now supports Smart Tracing
11
+ * Fixed an invalid Profile name in ActionView Partial tracing
12
+
13
+ # oboe 1.4.2.2 (05/16/13)
14
+
15
+ * Rack - add handling for potential nil result
16
+
17
+ # oboe 1.4.2 (05/02/13)
18
+
19
+ * Cassandra - ensure all keys are captured when reporting exceptions
20
+ * JRuby detection fix
21
+
22
+ # oboe 1.4.1.2 (04/29/13)
23
+
24
+ * HTTP keys now captured at Rack level instead of Rails
25
+ * RUM templates are now pre-loaded
26
+ * Improved layer agnostic info event reporting
27
+
28
+ # oboe 1.4.0.2 (03/08/13)
29
+
30
+ * Resque support
31
+ * Fix Rails 2 bug where SET and SHOW could result in recursive calls
32
+ * Memcache - multi-get calls now report a total for number of keys and number
33
+ of hits
34
+ * Configuration - added ability to identify components to skip from
35
+ instrumentation
36
+ * Configuration - sending Resque parameters can be skipped if privacy an issue.
37
+
38
+ # oboe 1.3.9.1 (02/04/13)
39
+
40
+ * Add in Rack instrumentation
41
+ * Fix Function profiling of class methods bug
42
+ * Add backtraces to Cassandra and Mongo operations
43
+ * Rename the "render" layer to "actionview"
44
+
45
+ # oboe 1.3.8 (01/04/13)
46
+
47
+ * More comprehensive JRuby support
48
+
49
+ # oboe 1.3.7 (12/10/12)
50
+
51
+ * Added Moped driver instrumentation (Mongo/Mongoid)
52
+
53
+ # oboe 1.3.6 (12/10/12)
54
+
55
+ * Added Rails ActionView partial and collection rendering instrumentation
56
+
57
+ # oboe 1.3.5 (11/14/12)
58
+
59
+ * Added cassandra instrumentation
60
+
61
+ # oboe 1.3.4 (10/23/12)
62
+
63
+ * Added mongo-ruby-driver support
64
+
65
+ # oboe 1.3.3 (10/18/12)
66
+
67
+ * Updated RUM instrumentation templates
68
+
69
+ # oboe 1.3.2 (10/17/12)
70
+
71
+ * Fix a case when the RUM instrumentation header/footer methods would not
72
+ return JS output, depending on how the way they were called from HAML.
73
+
74
+ # oboe 1.3.1 (10/15/12)
75
+
76
+ * Support for RUM instrumentation.
77
+ Fix for certain cases where exceptions were not properly propagated up to Rails
78
+ error handlers.
79
+
80
+ # oboe 1.3.0 (9/26/12)
81
+
82
+ * The oboe and oboe_fu gems have been merged to simplify installation. The
83
+ final oboe_fu gem (1.3.0) simply calls "require 'oboe'" now for backwards
84
+ compatibility.
85
+ * Please note our updated installation instructions for the new location of
86
+ Ruby oboe API methods.
87
+ * Our gem now successfully installs even if your platform does not have our
88
+ base packages (liboboe) installed, so you can deploy to environments with or
89
+ without TraceView support.
90
+
91
+ # oboe_fu 1.2.1 (9/12/12)
92
+
93
+ * Support for instrumenting the dalli module.
94
+
95
+ # oboe_fu 1.2.0 (8/28/12)
96
+
97
+ * Support for Rails 2.3, 3.0, 3.1, and 3.2.
98
+
99
+
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # Tracelytics Ruby (and Ruby Frameworks) Instrumentation
1
+ ## oboe - TraceView Ruby Instrumentation
2
2
 
3
- ```oboe``` provides instrumentation for [Ruby](http://www.ruby-lang.org/en/) and the [Rails framework](http://rubyonrails.org/), as well as other
4
- common components used to build rails applications.
3
+ The oboe gem provides AppNeta [TraceView](http://www.appneta.com/application-performance-management/) instrumentation for Ruby and Ruby frameworks.
5
4
 
6
5
  ## Installing
7
6
 
8
- See the [Ruby Knowedge Base article](http://support.tracelytics.com/kb/instrumenting-your-app/instrumenting-ruby-apps)
9
- for information on how to install. Release notes can be found [here](http://support.tracelytics.com/kb/instrumenting-your-app/ruby-instrumentation-release-notes)
7
+ The oboe gem is [available on Rubygems](https://rubygems.org/gems/oboe). See the [Ruby Knowedge Base article](http://support.tv.appneta.com/kb/ruby/instrumenting-ruby-apps)
8
+ for information on how to install.
9
+
10
+ Release notes can be found in the CHANGELOG or also [here](http://support.tv.appneta.com/kb/ruby/ruby-instrumentation-release-notes)
10
11
 
11
12
  ## Supported Technologies
12
13
 
@@ -16,21 +17,3 @@ Check the [support matrix](https://github.com/tracelytics/oboe-ruby/wiki/Support
16
17
 
17
18
  General tips using, installing and debugging the oboe gem can be found [here](https://github.com/tracelytics/oboe-ruby/wiki/Ruby-Oboe-Tips).
18
19
 
19
- ## liboboe Linking Notes
20
-
21
- Build instructions
22
-
23
- - Requires: liboboe development headers, available from the
24
- liboboe-dev (Ubuntu) and liboboe-devel (Red Hat) packages.
25
-
26
- Build and install a gem the normal way:
27
-
28
- gem build oboe.gemspec
29
- gem install oboe-VERSION.gem
30
-
31
- Compile a binary gem from a regular gem, using gem-compile [1]:
32
-
33
- sudo gem install gem-compile
34
- gem compile oboe-VERSION.gem
35
-
36
- [1] https://github.com/frsyuki/gem-compile
@@ -20,7 +20,7 @@ if jruby or ENV.has_key?('TRACEVIEW_URL')
20
20
  # FIXME: For JRuby we need to remove the c extension entirely
21
21
  create_makefile('oboe_noop', 'noop')
22
22
 
23
- elsif have_library('oboe')
23
+ elsif have_library('oboe', 'oboe_config_get_revision', 'oboe/oboe.h')
24
24
 
25
25
  $libs = append_library($libs, "oboe")
26
26
  $libs = append_library($libs, "stdc++")
@@ -29,10 +29,17 @@ elsif have_library('oboe')
29
29
  $CPPFLAGS << " #{ENV["CPPFLAGS"]}"
30
30
  $LIBS << " #{ENV["LIBS"]}"
31
31
 
32
- cpp_command('g++') if RUBY_VERSION < '1.9'
32
+ if RUBY_VERSION < '1.9'
33
+ cpp_command('g++')
34
+ $CPPFLAGS << "-I./src/"
35
+ end
33
36
  create_makefile('oboe_metal', 'src')
34
37
 
35
38
  else
39
+ if have_library('oboe')
40
+ $stderr.puts "Error: The oboe gem requires an updated liboboe. Please update your liboboe packages."
41
+ end
42
+
36
43
  $stderr.puts "Error: Could not find the base liboboe libraries. No tracing will occur."
37
44
  create_makefile('oboe_noop', 'noop')
38
45
  end
@@ -0,0 +1,221 @@
1
+ /* bson.h */
2
+
3
+ /* Copyright 2009, 2010 10gen Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #ifndef _BSON_H_
19
+ #define _BSON_H_
20
+
21
+ #define MONGO_HAVE_STDINT
22
+ #include "platform_hacks.h"
23
+ #include <time.h>
24
+
25
+ MONGO_EXTERN_C_START
26
+
27
+ typedef enum {
28
+ bson_error=-1,
29
+ bson_eoo=0,
30
+ bson_double=1,
31
+ bson_string=2,
32
+ bson_object=3,
33
+ bson_array=4,
34
+ bson_bindata=5,
35
+ bson_undefined=6,
36
+ bson_oid=7,
37
+ bson_bool=8,
38
+ bson_date=9,
39
+ bson_null=10,
40
+ bson_regex=11,
41
+ bson_dbref=12, /* deprecated */
42
+ bson_code=13,
43
+ bson_symbol=14,
44
+ bson_codewscope=15,
45
+ bson_int = 16,
46
+ bson_timestamp = 17,
47
+ bson_long = 18
48
+ } bson_type;
49
+
50
+ typedef int bson_bool_t;
51
+
52
+ typedef struct {
53
+ char * data;
54
+ bson_bool_t owned;
55
+ } bson;
56
+
57
+ typedef struct {
58
+ const char * cur;
59
+ bson_bool_t first;
60
+ } bson_iterator;
61
+
62
+ typedef struct {
63
+ char * buf;
64
+ char * cur;
65
+ int bufSize;
66
+ bson_bool_t finished;
67
+ int stack[32];
68
+ int stackPos;
69
+ } bson_buffer;
70
+
71
+ #pragma pack(1)
72
+ typedef union{
73
+ char bytes[12];
74
+ int ints[3];
75
+ } bson_oid_t;
76
+ #pragma pack()
77
+
78
+ typedef int64_t bson_date_t; /* milliseconds since epoch UTC */
79
+
80
+ /* ----------------------------
81
+ READING
82
+ ------------------------------ */
83
+
84
+
85
+ bson * bson_empty(bson * obj); /* returns pointer to static empty bson object */
86
+ int bson_copy(bson* out, const bson* in); /* puts data in new buffer. NOOP if out==NULL */
87
+ bson * bson_from_buffer(bson * b, bson_buffer * buf);
88
+ bson * bson_init( bson * b , char * data , bson_bool_t mine );
89
+ bson * bson_init_safe( bson * b , char * data , bson_bool_t mine , size_t buflen);
90
+ int bson_size(const bson * b );
91
+ void bson_destroy( bson * b );
92
+
93
+ void bson_print( bson * b );
94
+ void bson_print_raw( const char * bson , int depth );
95
+
96
+ /* advances iterator to named field */
97
+ /* returns bson_eoo (which is false) if field not found */
98
+ bson_type bson_find(bson_iterator* it, const bson* obj, const char* name);
99
+
100
+ void bson_iterator_init( bson_iterator * i , const char * bson );
101
+
102
+ /* more returns true for eoo. best to loop with bson_iterator_next(&it) */
103
+ bson_bool_t bson_iterator_more( const bson_iterator * i );
104
+ bson_type bson_iterator_next( bson_iterator * i );
105
+
106
+ bson_type bson_iterator_type( const bson_iterator * i );
107
+ const char * bson_iterator_key( const bson_iterator * i );
108
+ const char * bson_iterator_value( const bson_iterator * i );
109
+
110
+ /* these convert to the right type (return 0 if non-numeric) */
111
+ double bson_iterator_double( const bson_iterator * i );
112
+ int bson_iterator_int( const bson_iterator * i );
113
+ int64_t bson_iterator_long( const bson_iterator * i );
114
+
115
+ /* false: boolean false, 0 in any type, or null */
116
+ /* true: anything else (even empty strings and objects) */
117
+ bson_bool_t bson_iterator_bool( const bson_iterator * i );
118
+
119
+ /* these assume you are using the right type */
120
+ double bson_iterator_double_raw( const bson_iterator * i );
121
+ int bson_iterator_int_raw( const bson_iterator * i );
122
+ int64_t bson_iterator_long_raw( const bson_iterator * i );
123
+ bson_bool_t bson_iterator_bool_raw( const bson_iterator * i );
124
+ bson_oid_t* bson_iterator_oid( const bson_iterator * i );
125
+
126
+ /* these can also be used with bson_code and bson_symbol*/
127
+ const char * bson_iterator_string( const bson_iterator * i );
128
+ int bson_iterator_string_len( const bson_iterator * i );
129
+
130
+ /* works with bson_code, bson_codewscope, and bson_string */
131
+ /* returns NULL for everything else */
132
+ const char * bson_iterator_code(const bson_iterator * i);
133
+
134
+ /* calls bson_empty on scope if not a bson_codewscope */
135
+ void bson_iterator_code_scope(const bson_iterator * i, bson * scope);
136
+
137
+ /* both of these only work with bson_date */
138
+ bson_date_t bson_iterator_date(const bson_iterator * i);
139
+ time_t bson_iterator_time_t(const bson_iterator * i);
140
+
141
+ int bson_iterator_bin_len( const bson_iterator * i );
142
+ char bson_iterator_bin_type( const bson_iterator * i );
143
+ const char * bson_iterator_bin_data( const bson_iterator * i );
144
+
145
+ const char * bson_iterator_regex( const bson_iterator * i );
146
+ const char * bson_iterator_regex_opts( const bson_iterator * i );
147
+
148
+ /* these work with bson_object and bson_array */
149
+ void bson_iterator_subobject(const bson_iterator * i, bson * sub);
150
+ void bson_iterator_subiterator(const bson_iterator * i, bson_iterator * sub);
151
+
152
+ /* str must be at least 24 hex chars + null byte */
153
+ void bson_oid_from_string(bson_oid_t* oid, const char* str);
154
+ void bson_oid_to_string(const bson_oid_t* oid, char* str);
155
+ void bson_oid_gen(bson_oid_t* oid);
156
+
157
+ time_t bson_oid_generated_time(bson_oid_t* oid); /* Gives the time the OID was created */
158
+
159
+ /* ----------------------------
160
+ BUILDING
161
+ ------------------------------ */
162
+
163
+ bson_buffer * bson_buffer_init( bson_buffer * b );
164
+ bson_buffer * bson_ensure_space( bson_buffer * b , const int bytesNeeded );
165
+
166
+ /**
167
+ * @return the raw data. you either should free this OR call bson_destroy not both
168
+ */
169
+ char * bson_buffer_finish( bson_buffer * b );
170
+ void bson_buffer_destroy( bson_buffer * b );
171
+
172
+ bson_buffer * bson_append_oid( bson_buffer * b , const char * name , const bson_oid_t* oid );
173
+ bson_buffer * bson_append_new_oid( bson_buffer * b , const char * name );
174
+ bson_buffer * bson_append_int( bson_buffer * b , const char * name , const int i );
175
+ bson_buffer * bson_append_long( bson_buffer * b , const char * name , const int64_t i );
176
+ bson_buffer * bson_append_double( bson_buffer * b , const char * name , const double d );
177
+ bson_buffer * bson_append_string( bson_buffer * b , const char * name , const char * str );
178
+ bson_buffer * bson_append_symbol( bson_buffer * b , const char * name , const char * str );
179
+ bson_buffer * bson_append_code( bson_buffer * b , const char * name , const char * str );
180
+ bson_buffer * bson_append_code_w_scope( bson_buffer * b , const char * name , const char * code , const bson * scope);
181
+ bson_buffer * bson_append_binary( bson_buffer * b, const char * name, char type, const char * str, int len );
182
+ bson_buffer * bson_append_bool( bson_buffer * b , const char * name , const bson_bool_t v );
183
+ bson_buffer * bson_append_null( bson_buffer * b , const char * name );
184
+ bson_buffer * bson_append_undefined( bson_buffer * b , const char * name );
185
+ bson_buffer * bson_append_regex( bson_buffer * b , const char * name , const char * pattern, const char * opts );
186
+ bson_buffer * bson_append_bson( bson_buffer * b , const char * name , const bson* bson);
187
+ bson_buffer * bson_append_element( bson_buffer * b, const char * name_or_null, const bson_iterator* elem);
188
+
189
+ /* these both append a bson_date */
190
+ bson_buffer * bson_append_date(bson_buffer * b, const char * name, bson_date_t millis);
191
+ bson_buffer * bson_append_time_t(bson_buffer * b, const char * name, time_t secs);
192
+
193
+ bson_buffer * bson_append_start_object( bson_buffer * b , const char * name );
194
+ bson_buffer * bson_append_start_array( bson_buffer * b , const char * name );
195
+ bson_buffer * bson_append_finish_object( bson_buffer * b );
196
+
197
+ void bson_numstr(char* str, int i);
198
+ void bson_incnumstr(char* str);
199
+
200
+
201
+ /* ------------------------------
202
+ ERROR HANDLING - also used in mongo code
203
+ ------------------------------ */
204
+
205
+ void * bson_malloc(int size); /* checks return value */
206
+
207
+ /* bson_err_handlers shouldn't return!!! */
208
+ typedef void(*bson_err_handler)(const char* errmsg);
209
+
210
+ /* returns old handler or NULL */
211
+ /* default handler prints error then exits with failure*/
212
+ bson_err_handler set_bson_err_handler(bson_err_handler func);
213
+
214
+
215
+
216
+ /* does nothing is ok != 0 */
217
+ void bson_fatal( int ok );
218
+ int bson_fatal_msg( int ok, const char* msg );
219
+
220
+ MONGO_EXTERN_C_END
221
+ #endif
@@ -0,0 +1,91 @@
1
+ /* platform_hacks.h */
2
+ /* Copyright 2009, 2010 10gen Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+
18
+ /* all platform-specific ifdefs should go here */
19
+
20
+ #ifndef _PLATFORM_HACKS_H_
21
+ #define _PLATFORM_HACKS_H_
22
+
23
+ #ifdef __GNUC__
24
+ #define MONGO_INLINE static __inline__
25
+ #else
26
+ #define MONGO_INLINE static
27
+ #endif
28
+
29
+ #ifdef __cplusplus
30
+ #define MONGO_EXTERN_C_START extern "C" {
31
+ #define MONGO_EXTERN_C_END }
32
+ #else
33
+ #define MONGO_EXTERN_C_START
34
+ #define MONGO_EXTERN_C_END
35
+ #endif
36
+
37
+
38
+ #if defined(MONGO_HAVE_STDINT) || __STDC_VERSION__ >= 199901L
39
+ #include <stdint.h>
40
+ #elif defined(MONGO_HAVE_UNISTD)
41
+ #include <unistd.h>
42
+ #elif defined(MONGO_USE__INT64)
43
+ typedef __int64 int64_t;
44
+ #elif defined(MONGO_USE_LONG_LONG_INT)
45
+ typedef long long int int64_t;
46
+ #else
47
+ #error must have a 64bit int type
48
+ #endif
49
+
50
+ /* big endian is only used for OID generation. little is used everywhere else */
51
+ #ifdef MONGO_BIG_ENDIAN
52
+ #define bson_little_endian64(out, in) ( bson_swap_endian64(out, in) )
53
+ #define bson_little_endian32(out, in) ( bson_swap_endian32(out, in) )
54
+ #define bson_big_endian64(out, in) ( memcpy(out, in, 8) )
55
+ #define bson_big_endian32(out, in) ( memcpy(out, in, 4) )
56
+ #else
57
+ #define bson_little_endian64(out, in) ( memcpy(out, in, 8) )
58
+ #define bson_little_endian32(out, in) ( memcpy(out, in, 4) )
59
+ #define bson_big_endian64(out, in) ( bson_swap_endian64(out, in) )
60
+ #define bson_big_endian32(out, in) ( bson_swap_endian32(out, in) )
61
+ #endif
62
+
63
+ MONGO_EXTERN_C_START
64
+
65
+ MONGO_INLINE void bson_swap_endian64(void* outp, const void* inp){
66
+ const char *in = (const char*)inp;
67
+ char *out = (char*)outp;
68
+
69
+ out[0] = in[7];
70
+ out[1] = in[6];
71
+ out[2] = in[5];
72
+ out[3] = in[4];
73
+ out[4] = in[3];
74
+ out[5] = in[2];
75
+ out[6] = in[1];
76
+ out[7] = in[0];
77
+
78
+ }
79
+ MONGO_INLINE void bson_swap_endian32(void* outp, const void* inp){
80
+ const char *in = (const char*)inp;
81
+ char *out = (char*)outp;
82
+
83
+ out[0] = in[3];
84
+ out[1] = in[2];
85
+ out[2] = in[1];
86
+ out[3] = in[0];
87
+ }
88
+
89
+ MONGO_EXTERN_C_END
90
+
91
+ #endif