oboe 2.7.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +51 -0
  4. data/Appraisals +10 -0
  5. data/CHANGELOG.md +223 -0
  6. data/Gemfile +49 -0
  7. data/LICENSE +199 -0
  8. data/README.md +380 -0
  9. data/Rakefile +106 -0
  10. data/ext/oboe_metal/extconf.rb +61 -0
  11. data/ext/oboe_metal/noop/noop.c +7 -0
  12. data/ext/oboe_metal/src/bson/bson.h +221 -0
  13. data/ext/oboe_metal/src/bson/platform_hacks.h +91 -0
  14. data/ext/oboe_metal/src/oboe.h +275 -0
  15. data/ext/oboe_metal/src/oboe.hpp +352 -0
  16. data/ext/oboe_metal/src/oboe_wrap.cxx +3886 -0
  17. data/ext/oboe_metal/tests/test.rb +11 -0
  18. data/gemfiles/mongo.gemfile +33 -0
  19. data/gemfiles/moped.gemfile +33 -0
  20. data/get_version.rb +5 -0
  21. data/init.rb +4 -0
  22. data/lib/base.rb +99 -0
  23. data/lib/joboe_metal.rb +185 -0
  24. data/lib/method_profiling.rb +70 -0
  25. data/lib/oboe.rb +50 -0
  26. data/lib/oboe/api.rb +14 -0
  27. data/lib/oboe/api/layerinit.rb +99 -0
  28. data/lib/oboe/api/logging.rb +129 -0
  29. data/lib/oboe/api/memcache.rb +29 -0
  30. data/lib/oboe/api/profiling.rb +50 -0
  31. data/lib/oboe/api/tracing.rb +134 -0
  32. data/lib/oboe/api/util.rb +117 -0
  33. data/lib/oboe/config.rb +140 -0
  34. data/lib/oboe/frameworks/grape.rb +74 -0
  35. data/lib/oboe/frameworks/padrino.rb +66 -0
  36. data/lib/oboe/frameworks/padrino/templates.rb +59 -0
  37. data/lib/oboe/frameworks/rails.rb +139 -0
  38. data/lib/oboe/frameworks/rails/helpers/rum/rum_ajax_header.js.erb +5 -0
  39. data/lib/oboe/frameworks/rails/helpers/rum/rum_footer.js.erb +1 -0
  40. data/lib/oboe/frameworks/rails/helpers/rum/rum_header.js.erb +3 -0
  41. data/lib/oboe/frameworks/rails/inst/action_controller.rb +123 -0
  42. data/lib/oboe/frameworks/rails/inst/action_view.rb +56 -0
  43. data/lib/oboe/frameworks/rails/inst/action_view_2x.rb +54 -0
  44. data/lib/oboe/frameworks/rails/inst/action_view_30.rb +48 -0
  45. data/lib/oboe/frameworks/rails/inst/active_record.rb +24 -0
  46. data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql.rb +43 -0
  47. data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql2.rb +28 -0
  48. data/lib/oboe/frameworks/rails/inst/connection_adapters/oracle.rb +18 -0
  49. data/lib/oboe/frameworks/rails/inst/connection_adapters/postgresql.rb +30 -0
  50. data/lib/oboe/frameworks/rails/inst/connection_adapters/utils.rb +118 -0
  51. data/lib/oboe/frameworks/sinatra.rb +96 -0
  52. data/lib/oboe/frameworks/sinatra/templates.rb +56 -0
  53. data/lib/oboe/inst/cassandra.rb +281 -0
  54. data/lib/oboe/inst/dalli.rb +75 -0
  55. data/lib/oboe/inst/http.rb +72 -0
  56. data/lib/oboe/inst/memcache.rb +105 -0
  57. data/lib/oboe/inst/memcached.rb +96 -0
  58. data/lib/oboe/inst/mongo.rb +240 -0
  59. data/lib/oboe/inst/moped.rb +474 -0
  60. data/lib/oboe/inst/rack.rb +81 -0
  61. data/lib/oboe/inst/redis.rb +273 -0
  62. data/lib/oboe/inst/resque.rb +193 -0
  63. data/lib/oboe/instrumentation.rb +18 -0
  64. data/lib/oboe/loading.rb +98 -0
  65. data/lib/oboe/logger.rb +41 -0
  66. data/lib/oboe/ruby.rb +11 -0
  67. data/lib/oboe/util.rb +129 -0
  68. data/lib/oboe/version.rb +13 -0
  69. data/lib/oboe/xtrace.rb +52 -0
  70. data/lib/oboe_metal.rb +140 -0
  71. data/lib/rails/generators/oboe/install_generator.rb +76 -0
  72. data/lib/rails/generators/oboe/templates/oboe_initializer.rb +94 -0
  73. data/oboe.gemspec +29 -0
  74. data/release.sh +65 -0
  75. data/test/frameworks/apps/grape_simple.rb +10 -0
  76. data/test/frameworks/apps/padrino_simple.rb +41 -0
  77. data/test/frameworks/apps/sinatra_simple.rb +20 -0
  78. data/test/frameworks/grape_test.rb +27 -0
  79. data/test/frameworks/padrino_test.rb +25 -0
  80. data/test/frameworks/sinatra_test.rb +25 -0
  81. data/test/instrumentation/cassandra_test.rb +381 -0
  82. data/test/instrumentation/dalli_test.rb +164 -0
  83. data/test/instrumentation/http_test.rb +97 -0
  84. data/test/instrumentation/memcache_test.rb +251 -0
  85. data/test/instrumentation/memcached_test.rb +226 -0
  86. data/test/instrumentation/mongo_test.rb +462 -0
  87. data/test/instrumentation/moped_test.rb +473 -0
  88. data/test/instrumentation/rack_test.rb +73 -0
  89. data/test/instrumentation/redis_hashes_test.rb +265 -0
  90. data/test/instrumentation/redis_keys_test.rb +318 -0
  91. data/test/instrumentation/redis_lists_test.rb +310 -0
  92. data/test/instrumentation/redis_misc_test.rb +160 -0
  93. data/test/instrumentation/redis_sets_test.rb +293 -0
  94. data/test/instrumentation/redis_sortedsets_test.rb +325 -0
  95. data/test/instrumentation/redis_strings_test.rb +333 -0
  96. data/test/instrumentation/resque_test.rb +62 -0
  97. data/test/minitest_helper.rb +148 -0
  98. data/test/profiling/method_test.rb +198 -0
  99. data/test/support/config_test.rb +39 -0
  100. data/test/support/liboboe_settings_test.rb +46 -0
  101. data/test/support/xtrace_test.rb +35 -0
  102. metadata +200 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5f0a040f9289a43385bb49458b187fbecbfd5ffb
4
+ data.tar.gz: 614168d4ec921cf592a3c705cc8cedccaad842b4
5
+ SHA512:
6
+ metadata.gz: 142a42184a68638aaeb72b9db3ee4e23f8424dc7c884f115109fa05cfe40878a53fcee5cf9b2789806dea560f2fd0dc35662413ee2b054eb292dfbad040648cc
7
+ data.tar.gz: ecf5a96ff5be01a9b7185e346e2f8cdba3b56a6facd0d8aa22ccdd1d890b6f901db524870d7c4c30af26b3977a093af42508f0713c6c02ec34aa0c8f2ab777d7
@@ -0,0 +1,8 @@
1
+ oboe*.gem
2
+ *~
3
+ *.swp
4
+ lib/oboe_metal.so
5
+ ext/oboe_metal/Makefile
6
+ ext/oboe_metal/mkmf.log
7
+ ext/oboe_metal/oboe_metal.so
8
+ ext/oboe_metal/oboe_wrap.o
@@ -0,0 +1,51 @@
1
+ language: ruby
2
+
3
+ cache:
4
+ bundler: true
5
+ directories:
6
+ - vendor/bundle
7
+
8
+ rvm:
9
+ - 2.1.1
10
+ - 2.0.0
11
+ - 1.9.3
12
+ - 1.9.2
13
+ - 1.8.7
14
+ - ree
15
+ - jruby-19mode
16
+
17
+ #gemfile:
18
+ # - gemfiles/mongo.gemfile
19
+ # - gemfiles/moped.gemfile
20
+
21
+ # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
22
+ # Updated Cassandra: https://github.com/travis-ci/travis-ci/issues/1650
23
+ before_install:
24
+ - gem update --system 2.1.11
25
+ - gem --version
26
+ - sudo sh -c "echo 'JVM_OPTS=\"\${JVM_OPTS} -Djava.net.preferIPv4Stack=false\"' >> /usr/local/cassandra/conf/cassandra-env.sh"
27
+ - echo "127.0.0.1 " `hostname` | sudo tee /etc/hosts
28
+ - sudo service cassandra start
29
+
30
+ before_script: sleep 10
31
+
32
+ install:
33
+ - wget https://www.tracelytics.com/install_tracelytics.sh
34
+ - sudo sh ./install_tracelytics.sh f51e2a43-0ee5-4851-8a54-825773b3218e
35
+ - sudo apt-get install -y tracelytics-java-agent
36
+
37
+ before_script:
38
+ - bundle install --without development
39
+ - bundle exec rake compile
40
+
41
+ script: "bundle exec rake test"
42
+
43
+ services:
44
+ - mongodb
45
+ - memcached
46
+ - cassandra
47
+ - redis
48
+
49
+ matrix:
50
+ allow_failures:
51
+
@@ -0,0 +1,10 @@
1
+
2
+ appraise "mongo" do
3
+ gem 'mongo'
4
+ end
5
+
6
+ if RUBY_VERSION >= '1.9'
7
+ appraise "moped" do
8
+ gem 'moped', "~> 1.5"
9
+ end
10
+ end
@@ -0,0 +1,223 @@
1
+ # oboe 2.7.0 (08/13/2014)
2
+
3
+ This minor release includes:
4
+
5
+ * [JRuby instrumentation](https://github.com/appneta/oboe-ruby/pull/51) is back and better than ever
6
+ * [Updated moped instrumentation](https://github.com/appneta/oboe-ruby/pull/63) to support moped v2 changes
7
+ * Simplify start_trace by setting a default param: [#67](https://github.com/appneta/oboe-ruby/pull/67)
8
+
9
+ Pushed to Rubygems: https://rubygems.org/gems/oboe/versions/2.7.0
10
+
11
+ # oboe 2.6.8 (07/31/2014)
12
+
13
+ This patch release includes:
14
+
15
+ * Fix [instrumentation load for Padrino in test environments](https://github.com/appneta/oboe-ruby/pull/65)
16
+ * [Add delay](https://github.com/appneta/oboe-ruby/pull/66) in test suite to allow downloading of sample rate info
17
+
18
+ Pushed to Rubygems: https://rubygems.org/gems/oboe/versions/2.6.8
19
+
20
+ # oboe 2.6.7.1 (07/23/2014)
21
+
22
+ This patch release includes better error handling, API clean-up and RUM template improvements.
23
+
24
+ * [Add RUM helpers](https://github.com/appneta/oboe-ruby/pull/56) for Sinatra and Padrino stacks. Thanks @tlunter!
25
+ * Prefer [StandardError over Exception](https://github.com/appneta/oboe-ruby/pull/59) for rescue blocks that we handle directly
26
+ * [Clean up Oboe logging API](https://github.com/appneta/oboe-ruby/pull/58): Oboe.log, Oboe::Context.log and Oboe::API.log redundancy
27
+
28
+ # oboe 2.6.6.1 (06/16/2014)
29
+
30
+ This patch release adds new instrumentation and a couple fixes:
31
+
32
+ * [Add instrumentation support](https://github.com/appneta/oboe-ruby/pull/37) for [Grape API Micro Framework](http://intridea.github.io/grape/) (thanks @tlunter!)
33
+ * Important [Mongo find operation with block fix](https://github.com/appneta/oboe-ruby/pull/53) (thanks @rafaelfranca!)
34
+ * Better and more [data independent tests](https://github.com/appneta/oboe-ruby/pull/52) for Travis
35
+
36
+ # oboe 2.6.5.5 (06/02/2014)
37
+
38
+ This patch release improves [instrumentation for Mongo](https://github.com/appneta/oboe-ruby/pull/48) version >= 1.10 and fixes TraceView [sample rate reporting](https://github.com/appneta/oboe-ruby/pull/50).
39
+
40
+ # oboe 2.6.4.1 (04/30/2014)
41
+
42
+ This patch release adds detection and support for Redhat [OpenShift](https://www.openshift.com/). See our OpenShift [TraceView cartridge](https://github.com/appneta/openshift-cartridge-traceview) for base libraries before using this gem on OpenShift.
43
+
44
+ # oboe 2.6.3.0 (04/07/2014)
45
+
46
+ This patch releases fixes a number of smaller issues:
47
+
48
+ * the gem will no longer start traces on static assets (https://github.com/appneta/oboe-ruby/pull/31)
49
+ * fix occasionally broken `profile_name` values when using [custom method tracing](https://github.com/appneta/oboe-ruby#tracing-methods)
50
+ * fix for incorrectly starting traces when in `through` tracing mode under certain circumstances
51
+ * Expand the test suite to validate sample rates and tracing modes (https://github.com/appneta/oboe-ruby/pull/8)
52
+
53
+ # oboe 2.6.2.0 (03/24/2014)
54
+
55
+ * This patch release improves webserver detection on Heroku and adds in some c extension protections. A oboe-heroku gem release will follow this release.
56
+
57
+ # oboe 2.6.1.0 (03/12/2014)
58
+
59
+ This is a patch release to address "Unsupported digest algorithm (SHA256)" occurring under certain cases on Heroku. A oboe-heroku gem release will follow this release.
60
+
61
+ * Support delayed Reporter Initialization for Forking Webservers
62
+ * README syntax fixes
63
+
64
+ # oboe 2.5.0.7 (02/2013/2014)
65
+
66
+ * Added new Redis redis-rb gem (>= 3.0.0) instrumentation
67
+ * Fix a SampleSource bitmask high bit issue
68
+ * Expanded __Init reports
69
+ * Fix Ruby standalone returning nil X-Trace headers (1B000000...)
70
+ * Test against Ruby 2.1.0 on TravisCI
71
+ * Fix errant Oboe::Config warning
72
+
73
+ # oboe 2.4.0.1 (01/12/2013)
74
+
75
+ * Report SampleRate & SampleSource per updated SWIG API
76
+ * Change OboeHeroku __Init Key
77
+ * Remove oboe_fu artifacts
78
+ * CodeClimate Initiated improvements
79
+ * Remove SSL connection requirement from Net::HTTP tests
80
+ * oboe.gemspec doesn't specify Ruby 1.8 json dependency
81
+ * add config to blacklist tracing of actions (thanks @nathantsoi!)
82
+ * Report the application server used
83
+ * Support Oboe::Config.merge! and warn on non-existent (thanks @adamjt!)
84
+
85
+ # oboe 2.3.4.1 (11/21/2013)
86
+
87
+ * Stacks that use a caching system like Varnish could see corrupted traces; fixed.
88
+
89
+ # oboe 2.3.3.7 (11/06/2013)
90
+
91
+ * Rename the _Init layer to "rack"
92
+ * Decode URLS when reporting them
93
+ * Resque layer naming split into 1) client queuing of a job: 'resque-client', 2) Resque worker running a job: 'resque-worker'
94
+ * Fix for an extension load error and some refactoring of functionality into a base module (OboeBase)
95
+ * Improved and more resilient method profiling
96
+ * Further refactoring for Ruby 2.0 support
97
+ * Track the version of the instrumentation installed
98
+
99
+ # oboe 2.3.2 (10/22/2013)
100
+
101
+ * Backtrace collection can now be configured to skip certain components if a lighter-weight trace is desired
102
+ * On MRI Ruby the hostname of the Tracelyzer is now configurable via Oboe::Config[:reporter_host] (default is localhost)
103
+ * Fix to MongoDb query identification
104
+ * Event building in the Rack layer optimized
105
+ * Renamed "sampling_rate" to be "sample_rate" for consistency
106
+ * More tests added and documentation in anticipation of our Ruby open-source initiative
107
+
108
+ # oboe 2.2.6 (09/27/2013)
109
+
110
+ * Query Privacy now fully supported; can configure the app to not send SQL parameters if needed
111
+ * Configuring the local sample rate now supports 1e6 notation
112
+ * Improved log messaging if a gem dependency is missing
113
+ * Now reporting HTTPStatus on http client calls
114
+ * Heroku - the start time when a request hits the load balancer now captured
115
+
116
+ # oboe 2.2.0 (09/12/2013)
117
+
118
+ * Initial support for Rails 4
119
+ * Various internal reporting fixes and improvements
120
+ * Fix for auto sampling rate
121
+
122
+ # oboe 2.1.4 (08/01/2013)
123
+
124
+ * Integration support for AppView Web
125
+
126
+ # oboe 2.1.3 (07/16/2013)
127
+
128
+ * Allow _Access Key_ assignment via Environment variable: TRACEVIEW_CUUID
129
+
130
+ # oboe 2.1.1
131
+
132
+ * The gem now logs via a standard Ruby logger: Oboe.logger
133
+ * Add in rspec tests
134
+ * JRuby now supports Smart Tracing
135
+ * Fixed an invalid Profile name in ActionView Partial tracing
136
+
137
+ # oboe 1.4.2.2
138
+
139
+ * Rack - add handling for potential nil result
140
+
141
+ # oboe 1.4.2
142
+
143
+ * Cassandra - ensure all keys are captured when reporting exceptions
144
+ * JRuby detection fix
145
+
146
+ # oboe 1.4.1.2
147
+
148
+ * HTTP keys now captured at Rack level instead of Rails
149
+ * RUM templates are now pre-loaded
150
+ * Improved layer agnostic info event reporting
151
+
152
+ # oboe 1.4.0.2
153
+
154
+ * Resque support
155
+ * Fix Rails 2 bug where SET and SHOW could result in recursive calls
156
+ * Memcache - multi-get calls now report a total for number of keys and number
157
+ of hits
158
+ * Configuration - added ability to identify components to skip from
159
+ instrumentation
160
+ * Configuration - sending Resque parameters can be skipped if privacy an issue.
161
+
162
+ # oboe 1.3.9.1
163
+
164
+ * Add in Rack instrumentation
165
+ * Fix Function profiling of class methods bug
166
+ * Add backtraces to Cassandra and Mongo operations
167
+ * Rename the "render" layer to "actionview"
168
+
169
+ # oboe 1.3.8
170
+
171
+ * More comprehensive JRuby support
172
+
173
+ # oboe 1.3.7
174
+
175
+ * Added Moped driver instrumentation (Mongo/Mongoid)
176
+
177
+ # oboe 1.3.6
178
+
179
+ * Added Rails ActionView partial and collection rendering instrumentation
180
+
181
+ # oboe 1.3.5
182
+
183
+ * Added cassandra instrumentation
184
+
185
+ # oboe 1.3.4
186
+
187
+ * Added mongo-ruby-driver support
188
+
189
+ # oboe 1.3.3
190
+
191
+ * Updated RUM instrumentation templates
192
+
193
+ # oboe 1.3.2
194
+
195
+ * Fix a case when the RUM instrumentation header/footer methods would not
196
+ return JS output, depending on how the way they were called from HAML.
197
+
198
+ # oboe 1.3.1
199
+
200
+ * Support for RUM instrumentation.
201
+ Fix for certain cases where exceptions were not properly propagated up to Rails
202
+ error handlers.
203
+
204
+ # oboe 1.3.0
205
+
206
+ * The oboe and oboe_fu gems have been merged to simplify installation. The
207
+ final oboe_fu gem (1.3.0) simply calls "require 'oboe'" now for backwards
208
+ compatibility.
209
+ * Please note our updated installation instructions for the new location of
210
+ Ruby oboe API methods.
211
+ * Our gem now successfully installs even if your platform does not have our
212
+ base packages (liboboe) installed, so you can deploy to environments with or
213
+ without TraceView support.
214
+
215
+ # oboe_fu 1.2.1
216
+
217
+ * Support for instrumenting the dalli module.
218
+
219
+ # oboe_fu 1.2.0
220
+
221
+ * Support for Rails 2.3, 3.0, 3.1, and 3.2.
222
+
223
+
data/Gemfile ADDED
@@ -0,0 +1,49 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :development, :test do
4
+ gem 'minitest'
5
+ gem 'minitest-reporters'
6
+ gem 'rack-test'
7
+ gem 'appraisal'
8
+ end
9
+
10
+ group :development do
11
+ gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
12
+ gem 'debugger', :platform => :mri_19
13
+ gem 'byebug', :platforms => [ :mri_20, :mri_21 ]
14
+ gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
15
+ gem 'pry'
16
+ end
17
+
18
+ # Instrumented gems
19
+ gem 'dalli'
20
+ gem 'memcache-client'
21
+ gem 'cassandra'
22
+ gem 'mongo'
23
+ gem 'moped' if RUBY_VERSION >= '1.9'
24
+ gem 'resque'
25
+ gem 'redis'
26
+
27
+ unless defined?(JRUBY_VERSION)
28
+ gem 'memcached', '1.7.2' if RUBY_VERSION < '2.0.0'
29
+ gem 'bson_ext' # For Mongo, Yours Truly
30
+ end
31
+
32
+ # Instrumented Frameworks
33
+
34
+ if defined?(JRUBY_VERSION)
35
+ gem 'sinatra', :require => false
36
+ else
37
+ gem 'sinatra'
38
+ end
39
+
40
+ if RUBY_VERSION >= '1.9.3'
41
+ gem 'padrino', '0.12.0'
42
+ gem 'grape'
43
+ gem 'bson'
44
+ else
45
+ gem 'bson', '1.10.2'
46
+ end
47
+
48
+ gemspec
49
+
data/LICENSE ADDED
@@ -0,0 +1,199 @@
1
+ AppNeta Open License, Version 1.0
2
+
3
+ AppNeta Open License
4
+ Version 1.0, April, 2013
5
+
6
+ http://www.appneta.com/appneta-license
7
+
8
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
9
+
10
+ 1. Definitions.
11
+
12
+ "License" shall mean the terms and conditions for use, reproduction, and
13
+ distribution as defined by Sections 1 through 11 of this document.
14
+
15
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
16
+ owner that is granting the License. Licensor can include AppNeta as an
17
+ original contributor to the Work as defined below.
18
+
19
+ "Legal Entity" shall mean the union of the acting entity and all other entities
20
+ that control, are controlled by, or are under common control with that entity.
21
+ For the purposes of this definition, "control" means (i) the power, direct or
22
+ indirect, to cause the direction or management of such entity, whether by
23
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
24
+ outstanding shares, or (iii) beneficial ownership of such entity.
25
+
26
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
27
+ permissions granted by this License.
28
+
29
+ "Source" form shall mean the preferred form for making modifications, including
30
+ but not limited to software source code, documentation source, and
31
+ configuration files.
32
+
33
+ "Object" form shall mean any form resulting from mechanical transformation or
34
+ translation of a Source form, including but not limited to compiled object
35
+ code, generated documentation, and conversions to other media types.
36
+
37
+ "Work" shall mean the work of authorship, whether in Source or Object form,
38
+ made available under the License, as indicated by a copyright notice that is
39
+ included in or attached to the work (an example is provided in the Appendix
40
+ below).
41
+
42
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
43
+ is based on (or derived from) the Work and for which the editorial revisions,
44
+ annotations, elaborations, or other modifications represent, as a whole, an
45
+ original work of authorship. For the purposes of this License, Derivative Works
46
+ shall not include works that remain separable from, or merely link (or bind by
47
+ name) to the interfaces of, the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including the original
50
+ version of the Work and any modifications or additions to that Work or
51
+ Derivative Works thereof, that is intentionally submitted to Licensor for
52
+ inclusion in the Work by the copyright owner or by an individual or Legal
53
+ Entity authorized to submit on behalf of the copyright owner. For the purposes
54
+ of this definition, "submitted" means any form of electronic, verbal, or
55
+ written communication sent to the Licensor or its representatives, including
56
+ but not limited to communication on electronic mailing lists, source code
57
+ control systems, and issue tracking systems that are managed by, or on behalf
58
+ of, the Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise designated in
60
+ writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
63
+ of whom a Contribution has been received by Licensor and subsequently
64
+ incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License.
67
+
68
+ Subject to the terms and conditions of this License, each Contributor hereby
69
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
70
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the Work and
72
+ such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License.
75
+
76
+ Subject to the terms and conditions of this License, each Contributor hereby
77
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
78
+ irrevocable (except as stated in this section) patent license to make, have
79
+ made, use, offer to sell, sell, import, and otherwise transfer the Work, where
80
+ such license applies only to those patent claims licensable by such Contributor
81
+ that are necessarily infringed by their Contribution(s) alone or by combination
82
+ of their Contribution(s) with the Work to which such Contribution(s) was
83
+ submitted. If You institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
85
+ Contribution incorporated within the Work constitutes direct or contributory
86
+ patent infringement, then any patent licenses granted to You under this License
87
+ for that Work shall terminate as of the date such litigation is filed.
88
+
89
+ Each time You convey a covered Work, the recipient automatically receives a
90
+ license from the original Licensor(s), to run, modify and propagate that work,
91
+ subject to this License. You are not responsible for enforcing compliance by
92
+ third parties with this License.
93
+
94
+ You may not impose any further restrictions on the exercise of the rights
95
+ granted or affirmed under this License. For example, you may not impose a
96
+ license fee, royalty, or other charge for exercise of rights granted under this
97
+ License, and you may not initiate litigation (including a cross-claim or
98
+ counterclaim in a lawsuit) alleging that any patent claim is infringed by
99
+ making, using, selling, offering for sale, or importing the Work or any portion
100
+ of it.
101
+
102
+ 4. Redistribution.
103
+
104
+ You may reproduce and distribute copies of the Work or Derivative Works thereof
105
+ in any medium, with or without modifications, and in Source or Object form,
106
+ provided that You meet the following conditions:
107
+
108
+ 1. You must give any other recipients of the Work or Derivative Works a copy
109
+ of this License; and
110
+ 2. You must cause any modified files to carry prominent notices stating that
111
+ You changed the files; and
112
+ 3. You must retain, in the Source form of any Derivative Works that You
113
+ distribute, all copyright, patent, trademark, and attribution notices from the
114
+ Source form of the Work, excluding those notices that do not pertain to any
115
+ part of the Derivative Works; and
116
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
117
+ then any Derivative Works that You distribute must include a readable copy of
118
+ the attribution notices contained within such NOTICE file, excluding those
119
+ notices that do not pertain to any part of the Derivative Works, in at least
120
+ one of the following places: within a NOTICE text file distributed as part of
121
+ the Derivative Works; within the Source form or documentation, if provided
122
+ along with the Derivative Works; or, within a display generated by the
123
+ Derivative Works, if and wherever such third-party notices normally appear. The
124
+ contents of the NOTICE file are for informational purposes only and do not
125
+ modify the License. You may add Your own attribution notices within Derivative
126
+ Works that You distribute, alongside or as an addendum to the NOTICE text from
127
+ the Work, provided that such additional attribution notices cannot be construed
128
+ as modifying the License.
129
+
130
+ You may add Your own copyright statement to Your modifications and may provide
131
+ additional or different license terms and conditions for use, reproduction, or
132
+ distribution of Your modifications, or for any such Derivative Works as a
133
+ whole, provided Your use, reproduction, and distribution of the Work otherwise
134
+ complies with the conditions stated in this License.
135
+
136
+ 5. Submission of Contributions.
137
+
138
+ Unless You explicitly state otherwise, any Contribution intentionally submitted
139
+ for inclusion in the Work by You to the Licensor shall be under the terms and
140
+ conditions of this License, without any additional terms or conditions.
141
+ Notwithstanding the above, nothing herein shall supersede or modify the terms
142
+ of any separate license agreement you may have executed with Licensor regarding
143
+ such Contributions.
144
+
145
+ 6. Trademarks.
146
+
147
+ This License does not grant permission to use the trade names, trademarks,
148
+ service marks, or product names of the Licensor, except as required for
149
+ reasonable and customary use in describing the origin of the Work and
150
+ reproducing the content of the NOTICE file.
151
+
152
+ 7. Disclaimer of Warranty.
153
+
154
+ Unless required by applicable law or agreed to in writing, Licensor provides
155
+ the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
156
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
157
+ including, without limitation, any warranties or conditions of TITLE,
158
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
159
+ solely responsible for determining the appropriateness of using or
160
+ redistributing the Work and assume any risks associated with Your exercise of
161
+ permissions under this License.
162
+
163
+ 8. Limitation of Liability.
164
+
165
+ In no event and under no legal theory, whether in tort (including negligence),
166
+ contract, or otherwise, unless required by applicable law (such as deliberate
167
+ and grossly negligent acts) or agreed to in writing, shall any Contributor be
168
+ liable to You for damages, including any direct, indirect, special, incidental,
169
+ or consequential damages of any character arising as a result of this License
170
+ or out of the use or inability to use the Work (including but not limited to
171
+ damages for loss of goodwill, work stoppage, computer failure or malfunction,
172
+ or any and all other commercial damages or losses), even if such Contributor
173
+ has been advised of the possibility of such damages.
174
+
175
+ 9. Accepting Warranty or Additional Liability.
176
+
177
+ While redistributing the Work or Derivative Works thereof, You may choose to
178
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
179
+ other liability obligations and/or rights consistent with this License.
180
+ However, in accepting such obligations, You may act only on Your own behalf and
181
+ on Your sole responsibility, not on behalf of any other Contributor, and only
182
+ if You agree to indemnify, defend, and hold each Contributor harmless for any
183
+ liability incurred by, or claims asserted against, such Contributor by reason
184
+ of your accepting any such warranty or additional liability.
185
+
186
+ 10. Noncompetition
187
+
188
+ You may install and execute the Work only in conjunction with the direct use of
189
+ AppNeta software. This Work, any file or any derivative thereof shall not be
190
+ used in conjunction with any product that competes with any AppNeta software.
191
+
192
+ 11. Termination
193
+
194
+ The License stated above is automatically terminated and revoked if you exceed
195
+ its scope or violate any of the terms of this License or any related License or
196
+ notice.
197
+
198
+ END OF TERMS AND CONDITIONS
199
+