def test_login_packet(self):
		import packet

		#comes with predefined values
		id = packet.ID()
		
		testcase = {
			"__type":"LoginRequest:#Messages.RequestMessages",
			"Identity":packet.id_packet(id),
			"ProcessLabel":"test",
			"ProcessType" :3
		}
		self.assertEqual(testcase,packet.login_request(id,plabel="test"))
def login(fname, lname, anumber, alias, endpoint, label=None):
	
	if label==None: label=alias
	
	id = packet.ID()

	id.fname = fname
	id.lname = lname
	id.alias = alias
	id.anumber = anumber
	
	session = Session()
	
	#only ipv4 for now. Splits port from IP
	(address, port) = endpoint.split(":")
	port = eval(port)
	
	session.registry = (address,port)
	
	session.id = id
	while session.socket == None:
		session.socket = network.create_socket()
	
	log.info("Logging in")
	
	#While we're still waiting on a login reply, keep listening
	status = 0
	while(session.login == False):
		network.send( session, packet.login_request(session.id, label) )
		time.sleep(1)
		data = network.receive(session)
		if data==None: continue

		if(data["__type"] == "LoginReply:#Messages.ReplyMessages"):
			if(data["Success"]):
				log.info("Login succeeded")
				session.procinfo = data["ProcessInfo"]
				session.login = True
			else:
				log.error("Login failed")
				log.error("Error message was: "+ data["Note"])
				return session
		else:
			log.warning("Unexpected packet received: " + str(data) )

	return session