#!/usr/bin/python
#-*-coding:utf-8-*-
import httplib,urllib;
import json
import os
import sys
import time
import random
#host = "127.0.0.1:2123"
host = "180.150.184.115:29100"
roomid = 1000
tid = 101
sid = 102

def create_room(conn, headers, roomid):
  body = {}
  body["roomid"] = roomid
  body["tid"] = tid
  body["uid"] = sid
  
  pa = json.dumps(body) 
  print "----create room post: ", pa
  conn.request(method="POST", url="/createRoom", body=pa, headers=headers);
  response = conn.getresponse();
  print "resp:",response.status
  data = response.read()
  if response.status == 200:
      print "成功!";
  else:
      print "失败";
  print "data:",data
  d = eval(data)
  print d

def connect_room(conn, headers, roomid, uid):
  body = {}

  body["roomid"] = roomid
  body["uid"] = uid
  body["data"] = ""
  
  pa = json.dumps(body) 

  print "---connect room post: ", pa
  conn.request(method="POST", url="/connectRoom", body=pa, headers=headers);
  response = conn.getresponse();
  print "resp:",response.status
  data = response.read()
  if response.status == 200:
      print "成功!";
  else:
      print "失败";
  print "data:",data
  d = eval(data)
  print d

def destroy_room(conn, headers, roomid):
  body = {}

  body["roomid"] = roomid
  
  pa = json.dumps(body) 

  print "---------destroy room post: ", pa
  conn.request(method="POST", url="/destroyRoom", body=pa, headers=headers);
  response = conn.getresponse();
  print "resp:",response.status
  data = response.read()
  if response.status == 200:
      print "成功!";
  else:
      print "失败";
  print "data:",data
  d = eval(data)
  print d

def get_room_info(conn, headers, roomid):
  body = {}  
  body["roomid"] = roomid
  pa = json.dumps(body) 

  print "----get room post: ", pa
  conn.request(method="POST", url="/getRoomInfo", body=pa, headers=headers);
  response = conn.getresponse();
  print "resp:",response.status
  data = response.read()
  if response.status == 200:
      print "成功!";
  else:
      print "失败";
  print "data:",data
  d = eval(data)
  print d

def send_im(conn, headers, roomid, dst, content):
  body = {}  
  body["roomid"] = roomid
  body["dst_uid"] = dst
  body["content"] = content
  pa = json.dumps(body) 

  print "------ send im post: ", pa
  conn.request(method="POST", url="/sendMessage", body=pa, headers=headers);
  response = conn.getresponse();
  print "resp:",response.status
  data = response.read()
  if response.status == 200:
      print "成功!";
  else:
      print "失败";
  print "data:",data
  d = eval(data)
  print d

def tester(argv1, argv2, argv3, argv4):
  me = argv1
  headers = {"Content-Type":"application/json;charset=utf-8", "Connection":"Keep-Alive"}
  conn = httplib.HTTPConnection(host)
  if me == "create":
    roomid = int(argv2)
    create_room(conn, headers, roomid)
  elif me == "connect":
    roomid = int(argv2)
    uid = int(argv3)
    connect_room(conn, headers, roomid, uid)
  elif me == "get":
    roomid = int(argv2)
    get_room_info(conn, headers, roomid)
  elif me == "destroy":
    roomid = int(argv2)
    destroy_room(conn, headers, roomid)
  elif me == "im":
    roomid = int(argv2)
    dst = argv3
    content = argv4 
    send_im(conn, headers, roomid, dst, content)

def looper():
  random.seed(time.time())
  headers = {"Content-Type":"application/json;charset=utf-8", "Connection":"Keep-Alive"}
  conn = httplib.HTTPConnection(host)

  open_dict = {}
  min_roomid = 11230
  max_roomid = 11240
  status = ["lock", "unlock","close"]
  rid = 0
  while True:
    time.sleep(2)
    rid = random.randint(min_roomid, max_roomid)
    r = random.randint(0,100)
    if r < 30:
      tester("create", str(rid),"","")
    elif r < 50:
      rr = random.randint(0,100)
      uid = random.randint(0,100)
      if rr < 30:
        uid = tid
      elif rr < 70:
        uid = sid
      tester("connect", str(rid), str(uid),"")
    elif r < 75:
      tester("destroy", str(rid),"","")
    elif r < 90:
      tester("get", str(rid),"","")
    else:
      rr = random.randint(0,100)
      dst = "1212,3232"
      if rr < 30:
        dst = str(sid)
      elif rr < 70:
        dst = str(sid) + "," + str(tid)
      content = "random content" + str(rr)
      tester("im", str(rid), dst, content)

if __name__ == "__main__":

	do_loop = True
	if not do_loop:
		argv1 = ""
		if len(sys.argv) >= 2:
			argv1 = sys.argv[1]
			argv2 = ""
		if len(sys.argv) > 2:
			argv2 = sys.argv[2]
			argv3 = ""
		if len(sys.argv) > 3:
			argv3 = sys.argv[3]
			argv4 = ""
		if len(sys.argv) > 4:
			argv4 = sys.argv[4]
    		tester(argv1, argv2, argv3, argv4)
	else:
		looper()
