apptuit-fluent-plugin 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +25 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +64 -0
- data/LICENSE +202 -0
- data/README.md +82 -0
- data/Rakefile +13 -0
- data/apptuit-fluent-plugin.gemspec +26 -0
- data/lib/fluent/plugin/filter_Apptuit.rb +87 -0
- data/lib/fluent/plugin/fingerprinter.rb +181 -0
- data/test/helper.rb +16 -0
- data/test/plugin/java_fingerprint_tests.rb +652 -0
- data/test/plugin/node_fingerprint_tests.rb +71 -0
- data/test/plugin/python_fingerprint_tests.rb +208 -0
- data/test/plugin/test_filter_Apptuit.rb +320 -0
- metadata +152 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2017 Agilx, 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
|
+
#!/usr/bin/env ruby
|
17
|
+
"""Exception Fingerprint tests"""
|
18
|
+
require 'test/unit/assertions'
|
19
|
+
include Test::Unit::Assertions
|
20
|
+
|
21
|
+
|
22
|
+
class NodeFingerprintTests
|
23
|
+
|
24
|
+
def test_fp_not_a_stacktrace(fingerprinter)
|
25
|
+
result = fingerprinter.fingerprint_nodejs(
|
26
|
+
'User and his address details in appDataDynamic call {"user_type":"member","user_id":6763239,"selected_address":{"nick":"","id":"102840374","lat":10.96460749142318,"lng":76.9185347010498,"area":"Perur Chettipalayam, Coimbatore, Tamil Nadu","city_name":"Coimbatore","city_id":12,"city_short_name":"CBE","pin":641010,"is_partial":false,"is_default":true,"residential_complex":"HAD nagar","first_name":"Manhar","last_name":"JS","contact_area":"Perur Chettipalayam, Coimbatore, Tamil Nadu","contact_no":"8489947000","landmark":"nest to GVD Nagar arch","address_1":"oriental Inframart","address_2":"perur Kovaipudur main road","is_express":true,"shadow_city_id":12}}')
|
27
|
+
assert_equal(nil,result)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_fp_basic(fingerprinter)
|
31
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_nodejs(
|
32
|
+
'TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object. --- at fromObject (buffer.js:262:9) --- at Function.Buffer.from (buffer.js:101:10) --- at new Buffer (buffer.js:80:17) --- at Object.module.exports.decodeBase64 (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/bb-commons/utils/index.js:38:20) --- at module.exports.onAutosearchMapi (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/routes/index.js:96:27) --- at Layer.handle [as handle_request] (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/layer.js:95:5) --- at next (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/route.js:131:13) --- at Route.dispatch (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/route.js:112:3) --- at Layer.handle [as handle_request] (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/layer.js:95:5) --- at /srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:277:22 --- at param (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:349:14) --- at param (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:365:14) --- at param (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:365:14) --- at Function.process_params (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:410:3) --- at next (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:271:10) --- at module.exports.AutocompleteMiddleware (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/routes/middleware.js:8:5) --- at Layer.handle [as handle_request] (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/layer.js:95:5) --- at trim_prefix (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:312:13) --- at /srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:280:7 --- at Function.process_params (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:330:12) --- at next (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/express/lib/router/index.js:271:10) --- at module.exports.AggregatedRequestMiddleware (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/bb-commons/middlewares/aggregated_request_middleware.js:19:5) ')
|
33
|
+
assert_equal('TypeError', err_name)
|
34
|
+
assert_equal('c791f8a9c9e3f2df435a2852f32a42915dfe5548', fingerprint)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_fp_short(fingerprinter)
|
38
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_nodejs(
|
39
|
+
'TypeError: Cannot read property \'Hub\' of null --- at async (/srv/webapps/bigbasket.com/BigBasket/services/clan/node_modules/bb-commons/restWrappers/memberStores.js:422:31) --- at tryBlock (/srv/webapps/bigbasket.com/BigBasket/services/clan/node_modules/asyncawait/src/async/fiberManager.js:39:33) --- at runInFiber (/srv/webapps/bigbasket.com/BigBasket/services/clan/node_modules/asyncawait/src/async/fiberManager.js:26:9) ')
|
40
|
+
# print(err_name + ":" + fingerprint)
|
41
|
+
assert_equal('TypeError', err_name)
|
42
|
+
assert_equal('dce7fa69b17a121ffeb250c9528fda048fa59ed7', fingerprint)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_fp_mulitline_message(fingerprinter)
|
46
|
+
log_message = 'SolrError: {"responseHeader":{"zkConnected":true,"status":400,"QTime":1,"params":{"qt":"dismax_tc","fq":"parent_locality_283_i:1 AND text:()","wt":"json"}},"error":{"metadata":["error-class","org.apache.solr.common.SolrException","root-error-class","org.apache.solr.parser.ParseException"],"msg":"org.apache.solr.search.SyntaxError: Cannot parse \'parent_locality_283_i:1 AND text:()\': Encountered \" \")\" \") \"\" at line 1, column 34.\nWas expecting one of:\n <NOT> ...\n \"+\" ...\n \"-\" ...\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n <QUOTED> ...\n <TERM> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <LPARAMS> ...\n \"filter(\" ...\n <NUMBER> ...\n <TERM> ...\n ","code":400}}\n --- Request URL: http://solrcloud.bigbasket.com:8983/solr/bbconfig/select?fq=parent_locality_283_i:1%20AND%20text:()&qt=dismax_tc&wt=json\n --- Request method: GET\n --- Status code: 400 - Bad Request\n --- Request headers: \n --- accept: application/json; charset=utf-8\n --- host: solrcloud.bigbasket.com:8983\n --- Response headers: \n --- date: Thu, 10 May 2018 06:17:03 GMT\n --- content-type: text/plain;charset=utf-8\n --- content-length: 766\n --- connection: close\n --- cache-control: no-cache, no-store\n --- pragma: no-cache\n --- expires: Sat, 01 Jan 2000 01:00:00 GMT\n --- last-modified: Thu, 10 May 2018 06:17:03 GMT\n --- etag: "16348b22089" --- at IncomingMessage.<anonymous> (/srv/webapps/bigbasket.com/bb-solr-client/lib/solr.js:943:19) --- at emitNone (events.js:91:20) --- at IncomingMessage.emit (events.js:185:7) --- at endReadableNT (_stream_readable.js:974:12) --- at _combinedTickCallback (internal/process/next_tick.js:74:11) --- at process._tickDomainCallback (internal/process/next_tick.js:122:9) '
|
47
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_nodejs(
|
48
|
+
log_message)
|
49
|
+
#print(err_name + ":" + fingerprint)
|
50
|
+
#rint(log_message)
|
51
|
+
#print(essence)
|
52
|
+
assert_equal('SolrError', err_name)
|
53
|
+
assert_equal('9463b56bcf92930574cd9aa1be489ebe97815d4a', fingerprint)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_fp_json_wrapped(fingerprinter)
|
57
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_nodejs(
|
58
|
+
'Aerospike cache miss for Key::1:nsearch.psauto.cG1eZAYhYyIxNSFxJ3NveWEgc2EibWQLImx0TQolI21yaSEibmZD {"message":"AEROSPIKE_ERR_RECORD_NOT_FOUND","name":"AerospikeError","code":2,"func":"as_event_command_parse_result","file":"src/main/aerospike/as_event.c","line":619,"stack":"AerospikeError: AEROSPIKE_ERR_RECORD_NOT_FOUND at Function.AerospikeError.fromASError (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/aerospike/lib/aerospike_error.js:118:10) at Client.DefaultCallbackHandler [as callbackHandler] (/srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/aerospike/lib/client.js:161:72) at /srv/webapps/bigbasket.com/BigBasket/services/nodeAutosearch/node_modules/aerospike/lib/client.js:1532:19"}')
|
59
|
+
# print(err_name + ":" + fingerprint)
|
60
|
+
assert_equal('AerospikeError', err_name)
|
61
|
+
assert_equal('b0e6ae45ba72ae1aa3b4bfd6f0bd34608d4b3dd3', fingerprint)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_fp_json_with_at(fingerprinter)
|
65
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_nodejs(
|
66
|
+
'Error in increasing product quantity {"message":"Error in updating the cartItemQty. Should not happen","stack":"Error: Error in updating the cartItemQty. Should not happen at /srv/webapps/bigbasket.com/BigBasket/services/cart/controllers/BasketOperations.js:59:23 at tryBlock (/srv/webapps/bigbasket.com/BigBasket/services/cart/node_modules/asyncawait/src/async/fiberManager.js:39:33) at runInFiber (/srv/webapps/bigbasket.com/BigBasket/services/cart/node_modules/asyncawait/src/async/fiberManager.js:26:9)"}')
|
67
|
+
# print(err_name + ":" + fingerprint)
|
68
|
+
assert_equal('Error', err_name)
|
69
|
+
assert_equal('0e3a7d113bf9787cfa57d2fc8d8f8e43e62ec5be', fingerprint)
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,208 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2017 Agilx, 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
|
+
#!/usr/bin/env ruby
|
17
|
+
"""Exception Fingerprint tests"""
|
18
|
+
require 'test/unit/assertions'
|
19
|
+
include Test::Unit::Assertions
|
20
|
+
|
21
|
+
|
22
|
+
class PythonFingerprintTests
|
23
|
+
|
24
|
+
def test_fp_tmp(fingerprinter)
|
25
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
26
|
+
': upload-picked-order Internal Server Error for order 47353835 :invalid literal for int() with base 10: \'\' Traceback (most recent call last): '+
|
27
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/wapi/api.py", line 3648, in api_upload_process_picksubtypes '+
|
28
|
+
'--- try: '+
|
29
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/product/models.py", line 227, in get_cached '+
|
30
|
+
'--- \'product_description__category\').filter( '+
|
31
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 781, in filter '+
|
32
|
+
'--- return self._filter_or_exclude(False, *args, **kwargs) '+
|
33
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 799, in _filter_or_exclude '+
|
34
|
+
'--- clone.query.add_q(Q(*args, **kwargs)) '+
|
35
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1260, in add_q '+
|
36
|
+
'--- clause, _ = self._add_q(q_object, self.used_aliases) '+
|
37
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1286, in _add_q '+
|
38
|
+
'--- allow_joins=allow_joins, split_subq=split_subq, '+
|
39
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1220, in build_filter '+
|
40
|
+
'--- condition = self.build_lookup(lookups, col, value) '+
|
41
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1114, in build_lookup '+
|
42
|
+
'--- return final_lookup(lhs, rhs) '+
|
43
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/lookups.py", line 24, in __init__ '+
|
44
|
+
'--- self.rhs = self.get_prep_lookup() '+
|
45
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/lookups.py", line 74, in get_prep_lookup '+
|
46
|
+
'--- return self.lhs.output_field.get_prep_value(self.rhs) '+
|
47
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 1849, in get_prep_value '+
|
48
|
+
'--- return int(value) '+
|
49
|
+
'--- ValueError: invalid literal for int() with base 10: \'\' ---'
|
50
|
+
)
|
51
|
+
assert_equal('ValueError', err_name)
|
52
|
+
assert_equal('4ba02aa3b1e653a1bcf656be90183b6899561fad', fingerprint)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
def test_fp_colon_in_code(fingerprinter)
|
58
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
59
|
+
' Error while sending push notification for order: 46951142 Traceback (most recent call last): '+
|
60
|
+
'--- File "order/models.py", line 10760, in alert_order_cancellation_via_email_and_push_notification '+
|
61
|
+
'--- try: '+
|
62
|
+
'--- File "order/models.py", line 22188, in creating_entry_in_van_asssign_history '+
|
63
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 555, in latest '+
|
64
|
+
'--- return self._earliest_or_latest(field_name=field_name, direction="-") '+
|
65
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 549, in _earliest_or_latest '+
|
66
|
+
'--- return obj.get() '+
|
67
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 379, in get '+
|
68
|
+
'--- self.model._meta.object_name '+
|
69
|
+
'--- DoesNotExist: TPLOrderStatusLog matching query does not exist. ---')
|
70
|
+
assert_equal('DoesNotExist', err_name)
|
71
|
+
assert_equal('3fd256270a264d132c848648789c9b2e7d49be9d', fingerprint)
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_fp_colon_in_code1(fingerprinter)
|
75
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
76
|
+
'\'AnonymousUser\' object is not iterable Traceback (most recent call last): '+
|
77
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/mapi/cart_views.py", line 400, in get_cart_items_and_summary '+
|
78
|
+
'--- sections_resp = self.add_section_to_basket(cart, cart_dict) '+
|
79
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/mapi/cart_views.py", line 425, in add_section_to_basket '+
|
80
|
+
'--- particular_voucher_id=True) '+
|
81
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/evoucher/models.py", line 141, in get_promotional_evouchers '+
|
82
|
+
'--- valid_vouchers = EVoucher.objects.get_valid_vouchers_for_cart(member, cart) '+
|
83
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/evoucher/models.py", line 302, in get_valid_vouchers_for_cart '+
|
84
|
+
'--- voucher_order_association = self.get_voucher_order_association(vouchers, member) '+
|
85
|
+
'--- File "/srv/webapps/bigbasket.com/BigBasket/evoucher/models.py", line 247, in get_voucher_order_association '+
|
86
|
+
'--- order__isnull=False) \ '+
|
87
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method '+
|
88
|
+
'--- return getattr(self.get_queryset(), name)(*args, **kwargs) '+
|
89
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 781, in filter '+
|
90
|
+
'--- return self._filter_or_exclude(False, *args, **kwargs) '+
|
91
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/query.py", line 799, in _filter_or_exclude '+
|
92
|
+
'--- clone.query.add_q(Q(*args, **kwargs)) '+
|
93
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1260, in add_q '+
|
94
|
+
'--- clause, _ = self._add_q(q_object, self.used_aliases) '+
|
95
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1286, in _add_q '+
|
96
|
+
'--- allow_joins=allow_joins, split_subq=split_subq, '+
|
97
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1189, in build_filter '+
|
98
|
+
'--- self.check_related_objects(field, value, opts) '+
|
99
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1088, in check_related_objects '+
|
100
|
+
'--- for v in value: '+
|
101
|
+
'--- File "/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/utils/functional.py", line 239, in inner '+
|
102
|
+
'--- return func(self._wrapped, *args) '+
|
103
|
+
'--- TypeError: \'AnonymousUser\' object is not iterable --- ')
|
104
|
+
assert_equal('TypeError', err_name)
|
105
|
+
assert_equal('ca949fe44e2cd0c874b26d3153cc0f96389b0d6a', fingerprint)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_fp_one_err(fingerprinter)
|
109
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
110
|
+
' Catching exception while processing the Message, '+
|
111
|
+
'with Task ID = 41f916a3-a468-4d89-80c6-c6f1e9e7caef Traceback '+
|
112
|
+
'(most recent call last): --- File '+
|
113
|
+
'"/srv/webapps/bigbasket.com/BigBasket/bbasync/consumer.py", '+
|
114
|
+
'line 622, in retriable_dispatcher_task --- '+
|
115
|
+
'consumer_group, handler_call_args, handler_call_kwargs, '+
|
116
|
+
'msg_headers) --- File '+
|
117
|
+
'"/srv/webapps/bigbasket.com/BigBasket/bbasync/consumer.py", '+
|
118
|
+
'line 518, in dispatcher_task --- '+
|
119
|
+
'handler_call_kwargs) --- '+
|
120
|
+
'File "/srv/webapps/bigbasket.com/BigBasket/bbasync/consumer.py", '+
|
121
|
+
'line 572, in _dispatcher_task --- meth = fn(*args, **kwargs) '+
|
122
|
+
'--- File "warehouse/services.py", line 1631, in '+
|
123
|
+
'queueable_make_product_available --- '+
|
124
|
+
'make_product_available_sync(sr_obj_id, old_stock, force, stock) '+
|
125
|
+
'--- File "warehouse/services.py", line 1638, in '+
|
126
|
+
'make_product_available_sync --- raise '+
|
127
|
+
'Exception(\'Stock Reservation entry does not exist for %d\' '+
|
128
|
+
'% sr_obj_id) --- Exception: Stock Reservation entry does '+
|
129
|
+
'not exist for 1873208 --- ')
|
130
|
+
assert_equal('Exception', err_name)
|
131
|
+
assert_equal('50d4d0924c2bfc907f5dd976654a8c23d3449e79', fingerprint)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_fp_multi_err(fingerprinter)
|
135
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
136
|
+
'Traceback (most recent call last): --- File '+
|
137
|
+
'"/srv/webapps/bigbasket.com/BigBasket/member/models.py", line 9860, '+
|
138
|
+
'in _bulk_update_locality --- MemberAddressLocality.objects.'+
|
139
|
+
'create(member_address_id=member_address_id, locality_id=locality.id) '+
|
140
|
+
'--- AttributeError: \'NoneType\' object has no attribute \'id\' '+
|
141
|
+
'--- Traceback (most recent call last): --- File '+
|
142
|
+
'"/srv/webapps/bigbasket.com/BigBasket/member/models.py", line 9860, '+
|
143
|
+
'in _bulk_update_locality --- MemberAddressLocality.objects.'+
|
144
|
+
'create(member_address_id=member_address_id, locality_id=locality.id) '+
|
145
|
+
'--- AttributeError: \'NoneType\' object has no attribute \'id\' --- ')
|
146
|
+
assert_equal('AttributeError', err_name)
|
147
|
+
assert_equal('a4602817afb0e58e9a3da77e4e512ac1b2b3fc42', fingerprint)
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_fp_no_message(fingerprinter)
|
151
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
152
|
+
': Locus: There are no orders which are open and mapped to send to '+
|
153
|
+
'locus for Hub :Samalka , Slot Group : Delhi: D-S3 for order delivery '+
|
154
|
+
'date 2018-04-29 Traceback (most recent call last): --- File '+
|
155
|
+
'"/srv/webapps/bigbasket.com/BigBasket/locus/management/commands/'+
|
156
|
+
'locus_send_order_data.py", line 364, in send_batch --- '+
|
157
|
+
'order_ids=order_ids) --- File "/srv/webapps/bigbasket.com/BigBasket/'+
|
158
|
+
'locus/models.py", line 336, in create_batch_data --- '+
|
159
|
+
'raise NoOrdersForBatchException --- NoOrdersForBatchException --- ')
|
160
|
+
assert_equal('NoOrdersForBatchException', err_name)
|
161
|
+
assert_equal('ad3a804eea4de5c0531b607a4f904ffd5a3ab9bb', fingerprint)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_fp_message_has_traceback(fingerprinter)
|
165
|
+
err_name, fingerprint, essence, stack = fingerprinter.fingerprint_python(
|
166
|
+
'SENDING MAIL: Unable to send using this \'MAILGUN\' mailer settings '+
|
167
|
+
'{\'username\': \'postmaster@mg.bigbasket.com\', \'fail_silently\': '+
|
168
|
+
'False, \'use_tls\': True, \'host\': \'smtp.mailgun.org\', '+
|
169
|
+
'\'password\': \'8723123123\', \'port\': 587} Traceback '+
|
170
|
+
'(most recent call last): --- File "/srv/webapps/bigbasket.com/'+
|
171
|
+
'BigBasket/saul/utils.py", line 568, in send --- '+
|
172
|
+
'connection.send_messages([message]) --- File "/srv/webapps/'+
|
173
|
+
'bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/'+
|
174
|
+
'site-packages/django/core/mail/backends/smtp.py", line 111, '+
|
175
|
+
'in send_messages --- sent = self._send(message) --- File '+
|
176
|
+
'"/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/'+
|
177
|
+
'python2.7/site-packages/django/core/mail/backends/smtp.py", line 125, '+
|
178
|
+
'in _send --- message = email_message.message() --- File "/srv/'+
|
179
|
+
'webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/'+
|
180
|
+
'site-packages/django/core/mail/message.py", line 303, in message '+
|
181
|
+
'--- msg[\'Subject\'] = self.subject --- File "/srv/webapps/'+
|
182
|
+
'bigbasket.com/virtualenvs/bigbasket1.11/local/lib/python2.7/'+
|
183
|
+
'site-packages/django/core/mail/message.py", line 217, in __setitem__ '+
|
184
|
+
'--- name, val = forbid_multi_line_headers(name, val, '+
|
185
|
+
'self.encoding) --- File "/srv/webapps/bigbasket.com/virtualenvs/'+
|
186
|
+
'bigbasket1.11/local/lib/python2.7/site-packages/django/core/mail/'+
|
187
|
+
'message.py", line 92, in forbid_multi_line_headers --- '+
|
188
|
+
'raise BadHeaderError("Header values can\'t contain newlines (got %r '+
|
189
|
+
'for header %r)" % (val, name)) --- BadHeaderError: Header values '+
|
190
|
+
'can\'t contain newlines (got u\'Error in converting into small '+
|
191
|
+
'order: 46132322, Traceback (most recent call last):\\n File '+
|
192
|
+
'"/srv/webapps/bigbasket.com/BigBasket/order/models.py", line 9297, '+
|
193
|
+
'in check_and_move_small_order\\n ret_dict = self.change_hub('+
|
194
|
+
'new_hub, self.slot.slot_date, new_slot, change_hub_flag='+
|
195
|
+
'change_hub_flag)\\n File "/srv/webapps/bigbasket.com/BigBasket/order/'+
|
196
|
+
'models.py", line 8678, in change_hub\\n slot=self.slot.slot_time)'+
|
197
|
+
'.restrict_orderpick_by_vanassign\\n File "/srv/webapps/bigbasket.com/'+
|
198
|
+
'virtualenvs/bigbasket1.11/local/lib/python2.7/site-packages/django/db/'+
|
199
|
+
'models/manager.py", line 85, in manager_method\\n return '+
|
200
|
+
'getattr(self.get_queryset(), name)(*args, **kwargs)\\n File '+
|
201
|
+
'"/srv/webapps/bigbasket.com/virtualenvs/bigbasket1.11/local/lib/'+
|
202
|
+
'python2.7/site-packages/django/db/models/query.py", line 379, in '+
|
203
|
+
'get\\n self.model._meta.object_name\\nDoesNotExist: SlotHubCapacity '+
|
204
|
+
'matching query does not exist.\\n\' for header u\'Subject\') --- ')
|
205
|
+
assert_equal('BadHeaderError', err_name)
|
206
|
+
assert_equal('c29f4da45781e7a534a14d741abc38f22df8791d', fingerprint)
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,320 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2017 Agilx, 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
|
+
require "helper"
|
17
|
+
require "fluent/plugin/filter_Apptuit.rb"
|
18
|
+
require "test/plugin/java_fingerprint_tests.rb"
|
19
|
+
require "test/plugin/node_fingerprint_tests.rb"
|
20
|
+
require "test/plugin/python_fingerprint_tests.rb"
|
21
|
+
require "fluent/plugin/fingerprinter.rb"
|
22
|
+
|
23
|
+
class ApptuitFilterTest < Test::Unit::TestCase
|
24
|
+
setup do
|
25
|
+
Fluent::Test.setup
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_driver(conf)
|
29
|
+
Fluent::Test::Driver::Filter.new(Fluent::Plugin::ApptuitFilter).configure(conf)
|
30
|
+
end
|
31
|
+
|
32
|
+
python_conf = %[
|
33
|
+
lang python
|
34
|
+
]
|
35
|
+
java_conf = %[
|
36
|
+
lang java
|
37
|
+
]
|
38
|
+
nodejs_conf = %[
|
39
|
+
lang nodejs
|
40
|
+
]
|
41
|
+
|
42
|
+
python_msg = 'Traceback (most recent call last):
|
43
|
+
File "./app.py", line 7, in <module>
|
44
|
+
from schema import schema
|
45
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/schema.py", line 60, in <module>
|
46
|
+
schema = graphene.Schema(query=Query, types=[Department, Employee, Role])
|
47
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/schema.py", line 62, in __init__
|
48
|
+
self.build_typemap()
|
49
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/schema.py", line 126, in build_typemap
|
50
|
+
initial_types, auto_camelcase=self.auto_camelcase, schema=self
|
51
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 80, in __init__
|
52
|
+
super(TypeMap, self).__init__(types)
|
53
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 28, in __init__
|
54
|
+
self.update(reduce(self.reducer, types, OrderedDict())) # type: ignore
|
55
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
56
|
+
return self.graphene_reducer(map, type)
|
57
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 117, in graphene_reducer
|
58
|
+
return GraphQLTypeMap.reducer(map, internal_type)
|
59
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 106, in reducer
|
60
|
+
field_map = type.fields
|
61
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py", line 22, in __get__
|
62
|
+
value = obj.__dict__[self.func.__name__] = self.func(obj)
|
63
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 221, in fields
|
64
|
+
return define_field_map(self, self._fields)
|
65
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 235, in define_field_map
|
66
|
+
field_map = field_map()
|
67
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 274, in construct_fields_for_type
|
68
|
+
map = self.reducer(map, field.type)
|
69
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
70
|
+
return self.graphene_reducer(map, type)
|
71
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 117, in graphene_reducer
|
72
|
+
return GraphQLTypeMap.reducer(map, internal_type)
|
73
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 106, in reducer
|
74
|
+
field_map = type.fields
|
75
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py", line 22, in __get__
|
76
|
+
value = obj.__dict__[self.func.__name__] = self.func(obj)
|
77
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 221, in fields
|
78
|
+
return define_field_map(self, self._fields)
|
79
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 235, in define_field_map
|
80
|
+
field_map = field_map()
|
81
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 274, in construct_fields_for_type
|
82
|
+
map = self.reducer(map, field.type)
|
83
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
84
|
+
return self.graphene_reducer(map, type)
|
85
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 93, in graphene_reducer
|
86
|
+
return self.reducer(map, type.of_type)
|
87
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
88
|
+
return self.graphene_reducer(map, type)
|
89
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 93, in graphene_reducer
|
90
|
+
return self.reducer(map, type.of_type)
|
91
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
92
|
+
return self.graphene_reducer(map, type)
|
93
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 117, in graphene_reducer
|
94
|
+
return GraphQLTypeMap.reducer(map, internal_type)
|
95
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 106, in reducer
|
96
|
+
field_map = type.fields
|
97
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py", line 22, in __get__
|
98
|
+
value = obj.__dict__[self.func.__name__] = self.func(obj)
|
99
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 221, in fields
|
100
|
+
return define_field_map(self, self._fields)
|
101
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 235, in define_field_map
|
102
|
+
field_map = field_map()
|
103
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 274, in construct_fields_for_type
|
104
|
+
map = self.reducer(map, field.type)
|
105
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
106
|
+
return self.graphene_reducer(map, type)
|
107
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 117, in graphene_reducer
|
108
|
+
return GraphQLTypeMap.reducer(map, internal_type)
|
109
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 106, in reducer
|
110
|
+
field_map = type.fields
|
111
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py", line 22, in __get__
|
112
|
+
value = obj.__dict__[self.func.__name__] = self.func(obj)
|
113
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 221, in fields
|
114
|
+
return define_field_map(self, self._fields)
|
115
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 235, in define_field_map
|
116
|
+
field_map = field_map()
|
117
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 274, in construct_fields_for_type
|
118
|
+
map = self.reducer(map, field.type)
|
119
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
120
|
+
return self.graphene_reducer(map, type)
|
121
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 117, in graphene_reducer
|
122
|
+
return GraphQLTypeMap.reducer(map, internal_type)
|
123
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py", line 106, in reducer
|
124
|
+
field_map = type.fields
|
125
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py", line 22, in __get__
|
126
|
+
value = obj.__dict__[self.func.__name__] = self.func(obj)
|
127
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 221, in fields
|
128
|
+
return define_field_map(self, self._fields)
|
129
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py", line 235, in define_field_map
|
130
|
+
field_map = field_map()
|
131
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 274, in construct_fields_for_type
|
132
|
+
map = self.reducer(map, field.type)
|
133
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 88, in reducer
|
134
|
+
return self.graphene_reducer(map, type)
|
135
|
+
File "/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py", line 99, in graphene_reducer
|
136
|
+
).format(_type.graphene_type, type)
|
137
|
+
AssertionError: Found different types with the same name in the schema: EmployeeConnection, EmployeeConnection'
|
138
|
+
|
139
|
+
python_sys_msg = "Traceback (most recent call last):#012File \"./app.py\", line 7, in <module>#012 from schema import schema#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/schema.py\", line 60, in <module>#012 schema = graphene.Schema(query=Query, types=[Department, Employee, Role])#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/schema.py\", line 62, in __init__#012 self.build_typemap()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/schema.py\", line 126, in build_typemap#012 initial_types, auto_camelcase=self.auto_camelcase, schema=self#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 80, in __init__#012 super(TypeMap, self).__init__(types)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 28, in __init__#012 self.update(reduce(self.reducer, types, OrderedDict())) # type: ignore#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 117, in graphene_reducer#012 return GraphQLTypeMap.reducer(map, internal_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 106, in reducer#012 field_map = type.fields#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py\", line 22, in __get__#012 value = obj.__dict__[self.func.__name__] = self.func(obj)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 221, in fields#012 return define_field_map(self, self._fields)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 235, in define_field_map#012 field_map = field_map()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 274, in construct_fields_for_type#012 map = self.reducer(map, field.type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 117, in graphene_reducer#012 return GraphQLTypeMap.reducer(map, internal_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 106, in reducer#012 field_map = type.fields#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py\", line 22, in __get__#012 value = obj.__dict__[self.func.__name__] = self.func(obj)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 221, in fields#012 return define_field_map(self, self._fields)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 235, in define_field_map#012 field_map = field_map()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 274, in construct_fields_for_type#012 map = self.reducer(map, field.type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 93, in graphene_reducer#012 return self.reducer(map, type.of_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 93, in graphene_reducer#012 return self.reducer(map, type.of_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 117, in graphene_reducer#012 return GraphQLTypeMap.reducer(map, internal_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 106, in reducer#012 field_map = type.fields#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py\", line 22, in __get__#012 value = obj.__dict__[self.func.__name__] = self.func(obj)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 221, in fields#012 return define_field_map(self, self._fields)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 235, in define_field_map#012 field_map = field_map()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 274, in construct_fields_for_type#012 map = self.reducer(map, field.type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 117, in graphene_reducer#012 return GraphQLTypeMap.reducer(map, internal_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 106, in reducer#012 field_map = type.fields#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py\", line 22, in __get__#012 value = obj.__dict__[self.func.__name__] = self.func(obj)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 221, in fields#012 return define_field_map(self, self._fields)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 235, in define_field_map#012 field_map = field_map()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 274, in construct_fields_for_type#012 map = self.reducer(map, field.type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 117, in graphene_reducer#012 return GraphQLTypeMap.reducer(map, internal_type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/typemap.py\", line 106, in reducer#012 field_map = type.fields#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/pyutils/cached_property.py\", line 22, in __get__#012 value = obj.__dict__[self.func.__name__] = self.func(obj)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 221, in fields#012 return define_field_map(self, self._fields)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphql/type/definition.py\", line 235, in define_field_map#012 field_map = field_map()#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 274, in construct_fields_for_type#012 map = self.reducer(map, field.type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 88, in reducer#012 return self.graphene_reducer(map, type)#012File \"/home/joseph/Documents/graphene-sqlalchemy/examples/flask_sqlalchemy/env/lib/python3.6/site-packages/graphene/types/typemap.py\", line 99, in graphene_reducer#012 ).format(_type.graphene_type, type)#012AssertionError: Found different types with the same name in the schema: EmployeeConnection, EmployeeConnection"
|
140
|
+
|
141
|
+
java_msg = 'SEVERE [http-nio-8080-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Testing] in context with path [/test] threw exception [GET method is not supported.] with root cause
|
142
|
+
javax.servlet.ServletException: GET method is not supported.
|
143
|
+
at TestingServlet.doGet(TestingServlet.java:18)
|
144
|
+
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
|
145
|
+
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
|
146
|
+
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
|
147
|
+
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
|
148
|
+
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
|
149
|
+
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
|
150
|
+
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
|
151
|
+
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
|
152
|
+
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
|
153
|
+
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
|
154
|
+
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
|
155
|
+
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
|
156
|
+
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
|
157
|
+
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
|
158
|
+
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
|
159
|
+
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
|
160
|
+
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
|
161
|
+
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
|
162
|
+
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
|
163
|
+
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
|
164
|
+
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
|
165
|
+
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
|
166
|
+
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
|
167
|
+
at java.base/java.lang.Thread.run(Thread.java:844)'
|
168
|
+
|
169
|
+
java_sys_msg = 'SEVERE [http-nio-8080-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Testing] in context with path [/test] threw exception [GET method is not supported.] with root cause#012 javax.servlet.ServletException: GET method is not supported.#012#011at TestingServlet.doGet(TestingServlet.java:18)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)#012#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)#012#011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)#012#011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)#012#011at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)#012#011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)#012#011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)#012#011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)#012#011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)#012#011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)#012#011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)#012#011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)#012#011at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)#012#011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)#012#011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)#012#011at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)#012#011at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)#012#011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)#012#011at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)#012#011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)#012#011at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)#012#011at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)#012#011at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)#012#011at java.base/java.lang.Thread.run(Thread.java:844)'
|
170
|
+
|
171
|
+
nodejs_msg = 'Error: Something unexpected has occurred.
|
172
|
+
at main (c:\Users\Me\Documents\MyApp\app.js:9:15)
|
173
|
+
at Object. (c:\Users\Me\Documents\MyApp\app.js:17:1)
|
174
|
+
at Module._compile (module.js:460:26)
|
175
|
+
at Object.Module._extensions..js (module.js:478:10)
|
176
|
+
at Module.load (module.js:355:32)
|
177
|
+
at Function.Module._load (module.js:310:12)
|
178
|
+
at Function.Module.runMain (module.js:501:10)
|
179
|
+
at startup (node.js:129:16)
|
180
|
+
at node.js:814:3'
|
181
|
+
|
182
|
+
nodejs_sys_msg = "Error: Something unexpected has occurred.#012 at main (c:\\Users\\Me\\Documents\\MyApp\\app.js:9:15)#012 at Object. (c:\\Users\\Me\\Documents\\MyApp\\app.js:17:1)#012 at Module._compile (module.js:460:26)#012 at Object.Module._extensions..js (module.js:478:10)#012 at Module.load (module.js:355:32)#012 at Function.Module._load (module.js:310:12)#012 at Function.Module.runMain (module.js:501:10)#012 at startup (node.js:129:16)#012 at node.js:814:3"
|
183
|
+
|
184
|
+
nodejs_error_msg = "Something unexpected has occurred.#012 at main (c:\\Users\\Me\\Documents\\MyApp\\app.js:9:15)#012 at Object. (c:\\Users\\Me\\Documents\\MyApp\\app.js:17:1)#012 at Module._compile (module.js:460:26)#012 at Object.Module._extensions..js (module.js:478:10)#012 at Module.load (module.js:355:32)#012 at Function.Module._load (module.js:310:12)#012 at Function.Module.runMain (module.js:501:10)#012 at startup (node.js:129:16)#012 at node.js:814:3"
|
185
|
+
|
186
|
+
|
187
|
+
test "filter" do
|
188
|
+
d = create_driver(python_conf)
|
189
|
+
time = event_time
|
190
|
+
d.run do
|
191
|
+
d.feed("filter.python", time, {'message' => python_msg})
|
192
|
+
end
|
193
|
+
assert_equal('6c4a36dfca6b751f16a4065d61ec0de3f96e7eb8', d.filtered_records[0]['fingerprint'])
|
194
|
+
d = create_driver(python_conf+"syslog true")
|
195
|
+
time = event_time
|
196
|
+
d.run do
|
197
|
+
d.feed("filter.python",time, {'message' => python_sys_msg})
|
198
|
+
end
|
199
|
+
assert_equal('6c4a36dfca6b751f16a4065d61ec0de3f96e7eb8', d.filtered_records[0]['fingerprint'])
|
200
|
+
d = create_driver(python_conf+"error_msg_tag error_message")
|
201
|
+
time = event_time
|
202
|
+
d.run do
|
203
|
+
d.feed("filter.python",time, {'error_message' => python_msg})
|
204
|
+
end
|
205
|
+
assert_equal('6c4a36dfca6b751f16a4065d61ec0de3f96e7eb8', d.filtered_records[0]['fingerprint'])
|
206
|
+
d = create_driver(python_conf+"error_msg_tag error_message")
|
207
|
+
time = event_time
|
208
|
+
d.run do
|
209
|
+
d.feed("filter.python",time, {'error_message' => python_sys_msg})
|
210
|
+
end
|
211
|
+
assert_equal(nil, d.filtered_records[0]['fingerprint'])
|
212
|
+
d = create_driver(python_conf+"syslog true\n"+"error_msg_tag error_message")
|
213
|
+
time = event_time
|
214
|
+
d.run do
|
215
|
+
d.feed("filter.python",time, {'error_message' => python_sys_msg})
|
216
|
+
end
|
217
|
+
assert_equal('6c4a36dfca6b751f16a4065d61ec0de3f96e7eb8', d.filtered_records[0]['fingerprint'])
|
218
|
+
d = create_driver(java_conf)
|
219
|
+
time = event_time
|
220
|
+
d.run do
|
221
|
+
d.feed("filter.java", time, {'message' => java_msg})
|
222
|
+
end
|
223
|
+
assert_equal('35005154c55de5f08021c04959646a00063a8a81', d.filtered_records[0]['fingerprint'])
|
224
|
+
d = create_driver(java_conf+"syslog true")
|
225
|
+
time = event_time
|
226
|
+
d.run do
|
227
|
+
d.feed("filter.java", time, {'message' => java_sys_msg})
|
228
|
+
end
|
229
|
+
assert_equal('35005154c55de5f08021c04959646a00063a8a81', d.filtered_records[0]['fingerprint'])
|
230
|
+
d = create_driver(java_conf+"error_msg_tag error_message")
|
231
|
+
time = event_time
|
232
|
+
d.run do
|
233
|
+
d.feed("filter.java", time, {'error_message' => java_msg})
|
234
|
+
end
|
235
|
+
assert_equal('35005154c55de5f08021c04959646a00063a8a81', d.filtered_records[0]['fingerprint'])
|
236
|
+
d = create_driver(java_conf+"syslog true\n"+"error_msg_tag error_message")
|
237
|
+
time = event_time
|
238
|
+
d.run do
|
239
|
+
d.feed("filter.java", time, {'error_message' => java_sys_msg})
|
240
|
+
end
|
241
|
+
assert_equal('35005154c55de5f08021c04959646a00063a8a81', d.filtered_records[0]['fingerprint'])
|
242
|
+
d = create_driver(java_conf+"error_msg_tag error_message")
|
243
|
+
time = event_time
|
244
|
+
d.run do
|
245
|
+
d.feed("filter.java", time, {'error_message' => java_sys_msg})
|
246
|
+
end
|
247
|
+
assert_equal(nil, d.filtered_records[0]['fingerprint'])
|
248
|
+
d = create_driver(nodejs_conf)
|
249
|
+
time = event_time
|
250
|
+
d.run do
|
251
|
+
d.feed("filter.nodejs", time, {'message' => nodejs_msg})
|
252
|
+
end
|
253
|
+
assert_equal('24f271892eeaac14506e7ab563da0f03a19b0d84', d.filtered_records[0]['fingerprint'])
|
254
|
+
d = create_driver(nodejs_conf+"syslog true")
|
255
|
+
time = event_time
|
256
|
+
d.run do
|
257
|
+
d.feed("filter.nodejs", time, {'message' => nodejs_sys_msg})
|
258
|
+
end
|
259
|
+
assert_equal('24f271892eeaac14506e7ab563da0f03a19b0d84', d.filtered_records[0]['fingerprint'])
|
260
|
+
d = create_driver(nodejs_conf+"error_msg_tag error_message")
|
261
|
+
time = event_time
|
262
|
+
d.run do
|
263
|
+
d.feed("filter.nodejs", time, {'error_message' => nodejs_msg})
|
264
|
+
end
|
265
|
+
assert_equal('24f271892eeaac14506e7ab563da0f03a19b0d84', d.filtered_records[0]['fingerprint'])
|
266
|
+
d = create_driver(nodejs_conf+"syslog true\n"+"error_msg_tag error_message")
|
267
|
+
time = event_time
|
268
|
+
d.run do
|
269
|
+
d.feed("filter.nodejs", time, {'error_message' => nodejs_sys_msg})
|
270
|
+
end
|
271
|
+
assert_equal('24f271892eeaac14506e7ab563da0f03a19b0d84', d.filtered_records[0]['fingerprint'])
|
272
|
+
d = create_driver(nodejs_conf+"error_msg_tag error_message")
|
273
|
+
time = event_time
|
274
|
+
d.run do
|
275
|
+
d.feed("filter.nodejs", time, {'error_message' => nodejs_error_msg})
|
276
|
+
end
|
277
|
+
assert_equal(nil, d.filtered_records[0]['fingerprint'])
|
278
|
+
end
|
279
|
+
|
280
|
+
#Nodejs fingerprint tests
|
281
|
+
testing_object = NodeFingerprintTests.new()
|
282
|
+
fingerprint_object = FingerPrinter.new()
|
283
|
+
|
284
|
+
testing_object.test_fp_not_a_stacktrace(fingerprint_object)
|
285
|
+
testing_object.test_fp_basic(fingerprint_object)
|
286
|
+
testing_object.test_fp_short(fingerprint_object)
|
287
|
+
testing_object.test_fp_mulitline_message(fingerprint_object)
|
288
|
+
testing_object.test_fp_json_wrapped(fingerprint_object)
|
289
|
+
testing_object.test_fp_json_with_at(fingerprint_object)
|
290
|
+
|
291
|
+
#Python fingerprint tests
|
292
|
+
testing_object = PythonFingerprintTests.new()
|
293
|
+
fingerprint_object = FingerPrinter.new()
|
294
|
+
|
295
|
+
testing_object.test_fp_tmp(fingerprint_object)
|
296
|
+
testing_object.test_fp_colon_in_code(fingerprint_object)
|
297
|
+
testing_object.test_fp_colon_in_code1(fingerprint_object)
|
298
|
+
testing_object.test_fp_one_err(fingerprint_object)
|
299
|
+
testing_object.test_fp_multi_err(fingerprint_object)
|
300
|
+
testing_object.test_fp_no_message(fingerprint_object)
|
301
|
+
testing_object.test_fp_message_has_traceback(fingerprint_object)
|
302
|
+
|
303
|
+
#Java fingerprint tests
|
304
|
+
testing_object = JavaFingerprintTests.new()
|
305
|
+
fingerprint_object = FingerPrinter.new()
|
306
|
+
|
307
|
+
testing_object.test_baseline(fingerprint_object)
|
308
|
+
testing_object.test_nested_basic(fingerprint_object)
|
309
|
+
testing_object.test_fill_nostacktrace_nested_exception(fingerprint_object)
|
310
|
+
testing_object.test_otsd_exception(fingerprint_object)
|
311
|
+
testing_object.test_old_nesting_sax(fingerprint_object)
|
312
|
+
testing_object.test_old_nesting_jaxb(fingerprint_object)
|
313
|
+
testing_object.test_linenumbers_ignored(fingerprint_object)
|
314
|
+
testing_object.test_circular_ref(fingerprint_object)
|
315
|
+
testing_object.test_exception_in_dynamic_proxy(fingerprint_object)
|
316
|
+
testing_object.test_reflection_inflation(fingerprint_object)
|
317
|
+
testing_object.test_nested_non_nested(fingerprint_object)
|
318
|
+
testing_object.test_multi_line_message(fingerprint_object)
|
319
|
+
testing_object.test_heuristic_stacktrace_search(fingerprint_object)
|
320
|
+
end
|