Mobile Event Generator(Python)

Event Generator

Simulates a fake user playing a mobile game

import requests
import uuid
import random
import json
import time

DELAY = 1

class FakeUser(object):
  platforms = ('ios','android','amazon')
  app_versions = ('1.0.0','1.1.0','1.2.1','1.3.0','2.0.0','2.0.1')
  games = ('minigame1','minigame2','minigame3','minigame4','minigame5','minigame6')
  packages = { 'cheap':0.99, 'mid' : 9.99, 'expensive' : 19.99 }
  endpoints = ('https://sb9bwncpuf.execute-api.us-west-2.amazonaws.com/demo/events-incoming',)
  
  def __init__(self):
    self.app_name = 'Fake Application'
    self.platform = random.choice(self.platforms)
    self.app_version = random.choice(self.app_versions)
    self.game_keyword = random.choice(self.games)
    self.device_id = uuid.uuid4().hex
    self.install()
  
  def tick(self):
    if random.randint(1,10) == 1:
      self.change_game()
    if random.randint(1,100) == 1:
      self.purchase()
    else:
      self.playGame()
    if random.randint(1,10) == 1:
      self.__init__()
  
  def create_base_event(self):
    params = {
                'device_id' : self.device_id,
                'platform' : self.platform,
                'app_version' : self.app_version,
                'app_name' : self.app_name,
                'game_keyword' : self.game_keyword
             }
    return params
  
  def change_game(self):
    self.game_keyword = random.choice(self.games)

  def install(self):
    params = self.create_base_event()
    params['client_event_time'] = int(time.time())
    payload = {
      'eventName' : 'installEvent',
      'eventParams' : params
    }
    self.send_event(payload)
    
  def purchase(self):
    params = self.create_base_event()
    params['bundleId'] = random.choice(self.packages.keys())
    params['amount'] = self.packages[params['bundleId']]
    params['client_event_time'] = int(time.time())
    payload = {
      'eventName' : 'purchaseEvent',
      'eventParams' : params
    }
    self.send_event(payload)
  
  def playGame(self):
    params = self.create_base_event()
    params['game_keyword'] = self.game_keyword
    params['scoreAdjustment'] = random.randint(-1000,1000)
    params['client_event_time'] = int(time.time())
    payload = {
      'eventName': 'scoreAdjustment',
      'eventParams' : params
    }
    self.send_event(payload)
  
  def send_event(self, payload):
    data = json.dumps(payload)
    for endpoint in self.endpoints:
      res = requests.post(endpoint, data)
      if res.status_code != 502:
        print res

Run Generator

Loops until stopped

user = FakeUser()
while True:
  user.tick()
  time.sleep(DELAY)