Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: net/tools/testserver/chromiumsync.py

Issue 3078031: Simple offline startup integration test. (Closed)
Patch Set: Disable test. Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/python2.4 1 #!/usr/bin/python2.4
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """An implementation of the server side of the Chromium sync protocol. 6 """An implementation of the server side of the Chromium sync protocol.
7 7
8 The details of the protocol are described mostly by comments in the protocol 8 The details of the protocol are described mostly by comments in the protocol
9 buffer definition at chrome/browser/sync/protocol/sync.proto. 9 buffer definition at chrome/browser/sync/protocol/sync.proto.
10 """ 10 """
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 585
586 TestServer consumes the sync command messages that are the outermost 586 TestServer consumes the sync command messages that are the outermost
587 layers of the protocol, performs the corresponding actions on its 587 layers of the protocol, performs the corresponding actions on its
588 SyncDataModel, and constructs an appropropriate response message. 588 SyncDataModel, and constructs an appropropriate response message.
589 """ 589 """
590 590
591 def __init__(self): 591 def __init__(self):
592 # The implementation supports exactly one account; its state is here. 592 # The implementation supports exactly one account; its state is here.
593 self.account = SyncDataModel() 593 self.account = SyncDataModel()
594 self.account_lock = threading.Lock() 594 self.account_lock = threading.Lock()
595 self.account_user_email = 'syncjuser@chromium.org'
596
597 def HandleConfigure(self, config):
598 """Handles various test configuration parameters sent from the client.
599
600 Args:
601 config: Dictionary of configuration parameters.
602 Returns:
603 True if configuration was successful.
604 """
605 if config.has_key('user_email'):
606 self.account_user_email = config['user_email'][0]
607 return True
595 608
596 def HandleCommand(self, raw_request): 609 def HandleCommand(self, raw_request):
597 """Decode and handle a sync command from a raw input of bytes. 610 """Decode and handle a sync command from a raw input of bytes.
598 611
599 This is the main entry point for this class. It is safe to call this 612 This is the main entry point for this class. It is safe to call this
600 method from multiple threads. 613 method from multiple threads.
601 614
602 Args: 615 Args:
603 raw_request: An iterable byte sequence to be interpreted as a sync 616 raw_request: An iterable byte sequence to be interpreted as a sync
604 protocol command. 617 protocol command.
605 Returns: 618 Returns:
606 A tuple (response_code, raw_response); the first value is an HTTP 619 A tuple (response_code, raw_response); the first value is an HTTP
607 result code, while the second value is a string of bytes which is the 620 result code, while the second value is a string of bytes which is the
608 serialized reply to the command. 621 serialized reply to the command.
609 """ 622 """
610 self.account_lock.acquire() 623 self.account_lock.acquire()
611 try: 624 try:
612 request = sync_pb2.ClientToServerMessage() 625 request = sync_pb2.ClientToServerMessage()
613 request.MergeFromString(raw_request) 626 request.MergeFromString(raw_request)
614 contents = request.message_contents 627 contents = request.message_contents
615 628
616 response = sync_pb2.ClientToServerResponse() 629 response = sync_pb2.ClientToServerResponse()
617 response.error_code = sync_pb2.ClientToServerResponse.SUCCESS 630 response.error_code = sync_pb2.ClientToServerResponse.SUCCESS
618 response.store_birthday = self.account.store_birthday 631 response.store_birthday = self.account.store_birthday
619 632
620 if contents == sync_pb2.ClientToServerMessage.AUTHENTICATE: 633 if contents == sync_pb2.ClientToServerMessage.AUTHENTICATE:
621 print 'Authenticate' 634 print 'Authenticate'
622 # We accept any authentication token, and support only one account. 635 # We accept any authentication token, and support only one account.
623 # TODO(nick): Mock out the GAIA authentication as well; hook up here. 636 # TODO(nick): Mock out the GAIA authentication as well; hook up here.
624 response.authenticate.user.email = 'syncjuser@chromium' 637 response.authenticate.user.email = self.account_user_email
625 response.authenticate.user.display_name = 'Sync J User' 638 response.authenticate.user.display_name = 'Sync J User'
626 elif contents == sync_pb2.ClientToServerMessage.COMMIT: 639 elif contents == sync_pb2.ClientToServerMessage.COMMIT:
627 print 'Commit' 640 print 'Commit'
628 self.HandleCommit(request.commit, response.commit) 641 self.HandleCommit(request.commit, response.commit)
629 elif contents == sync_pb2.ClientToServerMessage.GET_UPDATES: 642 elif contents == sync_pb2.ClientToServerMessage.GET_UPDATES:
630 print ('GetUpdates from timestamp %d' % 643 print ('GetUpdates from timestamp %d' %
631 request.get_updates.from_timestamp) 644 request.get_updates.from_timestamp)
632 self.HandleGetUpdates(request.get_updates, response.get_updates) 645 self.HandleGetUpdates(request.get_updates, response.get_updates)
633 return (200, response.SerializeToString()) 646 return (200, response.SerializeToString())
634 finally: 647 finally:
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 new_timestamp, entries = self.account.GetChangesFromTimestamp( 705 new_timestamp, entries = self.account.GetChangesFromTimestamp(
693 requested_types, update_request.from_timestamp) 706 requested_types, update_request.from_timestamp)
694 707
695 # If the client is up to date, we are careful not to set the 708 # If the client is up to date, we are careful not to set the
696 # new_timestamp field. 709 # new_timestamp field.
697 if new_timestamp != update_request.from_timestamp: 710 if new_timestamp != update_request.from_timestamp:
698 update_response.new_timestamp = new_timestamp 711 update_response.new_timestamp = new_timestamp
699 for e in entries: 712 for e in entries:
700 reply = update_response.entries.add() 713 reply = update_response.entries.add()
701 reply.CopyFrom(e) 714 reply.CopyFrom(e)
OLDNEW
« no previous file with comments | « chrome/test/live_sync/profile_sync_service_test_harness.cc ('k') | net/tools/testserver/testserver.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698