-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Large int values as hash_key can not be queried #28
Comments
I'm fairly sure this is an issue with how the underlying HTTP mocking library (HTTPretty) deals with message chunking. Moto is currently on an older bundled version of HTTPretty, but I am actively working on getting it back on the upstream version. I put in a pull request for something else yesterday to HTTPretty that should also fix this: gabrielfalcao/HTTPretty#57 |
thanks, |
This should be fixed in the newest version. Can you confirm? |
You mean this commit 755fe65 or you mean the httpretty branch? |
The merging of the httpretty-upstream branch at 000006e should have fixed this. How are you installing moto? It is actually dependent upon the HEAD of httpretty right now, which is different than the latest release. This should automatically get picked up due to https://github.com/spulec/moto/blob/master/setup.py#L26. If nothing else, I'll bug the httpretty author to push out a new version in the next couple days so that moto can get on to a real release of it. |
Aha, thanks man, yes the problem was the dependency was not properly handled, here is the log:
I just removed my httpretty and downloaded the dependency and manually installed it, when ran the setup still get the same complaint "error: Could not find required distribution httpretty==0.6.0a" |
OK, I think I installed everything as they should but now I get a different error:
|
I can't seem to reproduce this. Do you think you could write up a small test case that breaks? |
sorry for the late reply, I striped down one of my failing tests that I think runs into the problem we are discussing: # -*- conding: utf-8 -*-
import boto
from moto import mock_dynamodb
from moto.dynamodb import dynamodb_backend
import unittest
import time
import datetime
class TestPostMessage(unittest.TestCase):
@mock_dynamodb
def test_postSimpleMessage(self):
sessionid = 1234567890
uid = 9876543210
segment_id = 3241526475
messagebody = 'just testing you'
replyto = 1324254568
tag = 'testing'
dynamodb_backend.create_table('mockCSSessions', hash_key_attr="PK_SID", hash_key_type="N")
dynamodb_backend.create_table('mockCSMessages', hash_key_attr="PK_MID", hash_key_type="N", range_key_attr="RK_SEGID", range_key_type="N")
conn = boto.connect_dynamodb()
table = conn.get_table('mockCSSessions')
item = table.new_item(hash_key=sessionid, attrs={'userid':uid, 'segmentid':segment_id})
item.put()
env = {}
env['dbconnection'] = conn
env['dbsfx'] = 'mock'
env['remote'] = {'remote_ip':'1.1.1.1', 'remote_agent':'Mozilla FireDog'}
r = {}
if (uid==0):
r['error'] += 'you must be logged in to post a message'
else:
if (segment_id==0):
r['error'] += 'you must be checked into the segment to post a message'
else:
try:
mTable = env['dbconnection'].get_table(env['dbsfx'] + 'CSMessages')
except Exception as e:
if (e.error_code == 'ResourceNotFoundException'):
r['message'] += 'Table not found segment not setup correctly '
raise e
message_id = 1234567890987
item_data = {}
item_data['createdby'] = uid
item_data['timestamp'] = time.mktime(datetime.datetime.now().timetuple())
if(messagebody):
item_data['body'] = messagebody
if(replyto):
item_data['replyto'] = replyto
if(tag):
item_data['tag'] = tag
attachmentURLs = 'test.png'
if(attachmentURLs):
item_data['attachmentURLs'] = attachmentURLs
rr = mTable.new_item(hash_key=message_id, range_key=segment_id, attrs=item_data)
rr.put()
r['messageid'] = message_id
meTable = env['dbconnection'].get_table(env['dbsfx'] + 'CSMessagesSegment')
meitem = meTable.new_item(hash_key=segment_id, range_key=message_id)
meitem.put()
self.assertTrue(int(r['messageid'])>0)
mtable = conn.get_table('mockCSMessages')
mitem = mtable.get_item(hash_key=r['PK_MID'])
self.assertEqual(mitem['messageid'], r['messageid'])
|
I think the issue is that you're calling I've fixed moto to handle this case properly instead of blowing up. |
Sorry, that was embarrassing :| |
No worries. Your mistake would have been much easier for you to spot if Moto had been giving the proper error messaging. I'm happy that this was reported and fixed so that the next user to come along will have an easier time. |
* fix OPTIONS requests on non-existing API GW integrations * add cloudformation models for API Gateway deployments * bump version * add backdoor to return CloudWatch metrics * Updating implementation coverage * Updating implementation coverage * add cloudformation models for API Gateway deployments * Updating implementation coverage * Updating implementation coverage * Implemented get-caller-identity returning real data depending on the access key used. * bump version * minor fixes * fix Number data_type for SQS message attribute * fix handling of encoding errors * bump version * make CF stack queryable before starting to initialize its resources * bump version * fix integration_method for API GW method integrations * fix undefined status in CF FakeStack * Fix apigateway issues with terraform v0.12.21 * resource_methods -> add handle for "DELETE" method * integrations -> fix issue that "httpMethod" wasn't included in body request (this value was set as the value from refer method resource) * bump version * Fix setting http method for API gateway integrations (#6) * bump version * remove duplicate methods * add storage class to S3 Key when completing multipart upload (#7) * fix SQS performance issues; bump version * add pagination to SecretsManager list-secrets (#9) * fix default parameter groups in RDS * fix adding S3 metadata headers with names containing dots (#13) * Updating implementation coverage * Updating implementation coverage * add cloudformation models for API Gateway deployments * Updating implementation coverage * Updating implementation coverage * Implemented get-caller-identity returning real data depending on the access key used. * make CF stack queryable before starting to initialize its resources * bump version * remove duplicate methods * fix adding S3 metadata headers with names containing dots (#13) * Update amis.json to support EKS AMI mocks (#15) * fix PascalCase for boolean value in ListMultipartUploads response (#17); fix _get_multi_param to parse nested list/dict query params * determine non-zero container exit code in Batch API * support filtering by dimensions in CW get_metric_statistics * fix storing attributes for ELBv2 Route entities; API GW refactorings for TF tests * add missing fields for API GW resources * fix error messages for Route53 (TF-compat) * various fixes for IAM resources (tf-compat) * minor fixes for API GW models (tf-compat) * minor fixes for API GW responses (tf-compat) * add s3 exception for bucket notification filter rule validation * change the way RESTErrors generate the response body and content-type header * fix lint errors and disable "black" syntax enforcement * remove return type hint in RESTError.get_body * add RESTError XML template for IAM exceptions * add support for API GW minimumCompressionSize * fix casing getting PrivateDnsEnabled API GW attribute * minor fixes for error responses * fix escaping special chars for IAM role descriptions (tf-compat) * minor fixes and tagging support for API GW and ELB v2 (tf-compat) * Merge branch 'master' into localstack * add "AlarmRule" attribute to enable support for composite CloudWatch metrics * fix recursive parsing of complex/nested query params * bump version * add API to delete S3 website configurations (#18) * use dict copy to allow parallelism and avoid concurrent modification exceptions in S3 * fix precondition check for etags in S3 (#19) * minor fix for user filtering in Cognito * fix API Gateway error response; avoid returning empty response templates (tf-compat) * support tags and tracingEnabled attribute for API GW stages * fix boolean value in S3 encryption response (#20) * fix connection arn structure * fix api destination arn structure * black format * release 2.0.3.37 * fix s3 exception tests see botocore/parsers.py:1002 where RequestId is removed from parsed * remove python 2 from build action * add test failure annotations in build action * fix events test arn comparisons * fix s3 encryption response test * return default value "0" if EC2 availableIpAddressCount is empty * fix extracting SecurityGroupIds for EC2 VPC endpoints * support deleting/updating API Gateway DomainNames * fix(events): Return empty string instead of null when no pattern is specified in EventPattern (tf-compat) (#22) * fix logic and revert CF changes to get tests running again (#21) * add support for EC2 customer gateway API (#25) * add support for EC2 Transit Gateway APIs (#24) * feat(logs): add `kmsKeyId` into `LogGroup` entity (#23) * minor change in ELBv2 logic to fix tests * feat(events): add APIs to describe and delete CloudWatch Events connections (#26) * add support for EC2 transit gateway route tables (#27) * pass transit gateway route table ID in Describe API, minor refactoring (#29) * add support for EC2 Transit Gateway Routes (#28) * fix region on ACM certificate import (#31) * add support for EC2 transit gateway attachments (#30) * add support for EC2 Transit Gateway VPN attachments (#32) * fix account ID for logs API * add support for DeleteOrganization API * feat(events): store raw filter representation for CloudWatch events patterns (tf-compat) (#36) * feat(events): add support to describe/update/delete CloudWatch API destinations (#35) * add Cognito UpdateIdentityPool, CW Logs PutResourcePolicy * feat(events): add support for tags in EventBus API (#38) * fix parameter validation for Batch compute environments (tf-compat) * revert merge conflicts in IMPLEMENTATION_COVERAGE.md * format code using black * restore original README; re-enable and fix CloudFormation tests * restore tests and old logic for CF stack parameters from SSM * parameterize RequestId/RequestID in response messages and revert related test changes * undo LocalStack-specific adaptations * minor fix * Update CodeCov config to reflect removal of Py2 * undo change related to CW metric filtering; add additional test for CW metric statistics with dimensions * Terraform - Extend whitelist of running tests Co-authored-by: acsbendi <acsbendi28@gmail.com> Co-authored-by: Phan Duong <duongpv@outlook.com> Co-authored-by: Thomas Rausch <thomas@thrau.at> Co-authored-by: Macwan Nevil <macnev2013@gmail.com> Co-authored-by: Dominik Schubert <dominik.schubert91@gmail.com> Co-authored-by: Gonzalo Saad <saad.gonzalo.ale@gmail.com> Co-authored-by: Mohit Alonja <monty16597@users.noreply.github.com> Co-authored-by: Miguel Gagliardo <migag9@gmail.com> Co-authored-by: Bert Blommers <info@bertblommers.nl>
I have very large int values as hash keys and moto fails to find them using query, I don't know if this is a moto or boto error, my error looks like below, not that in like 46 PK_MID is 444881095079499277 and I just inserted it and if do a scan and print it is there, and if I do a manual comparison it matches:
The text was updated successfully, but these errors were encountered: