Locust-file
import shutil
import os
from pathlib import Path
import time
from locust import User, task, between
import os
import re
import glob, os
import random
import os.path
import traceback
import sys
from P4 import P4
import subprocess
from locust import User, TaskSet, constant
import codecs
import locust_plugins
class Test:
def connect(self,user):
try:
p4.user = user
p4.password ="User123#"
cmd=p4.connect()
print(cmd)
except:
print ("An error occurred")
traceback.print_exception(*sys.exc_info())
def addsubmit(self,user,client):
arr=random.randint(0, 4)
p4.user=user
callbash=subprocess.Popen(["/home/perforce/creatfiles.sh", user,client,"add"])
callbash.wait()
client_dir="/home/perforce/" + client
os.chdir(client_dir)
p4client=user + "-" + client + "*"
p4.user=user
p4.password ="User123#"
p4.client = client
flag=0
for file in glob.glob(p4client):
flag=1
file = client + "/" + file
cmd = p4.run("add",file)
#print(cmd)
if (flag == 1):
scmd = p4.run("submit", "-d AddSubmit")
else:
self.addsubmit(user,client)
def editsubmit(self,user,client):
p4.user=user
client_dir="/home/perforce/" + client
os.chdir(client_dir)
p4client=user + "-" + client + "*"
p4.user=user
p4.password ="User123#"
p4.client = client
flag=0
for file in glob.glob(p4client):
flag=1
file = client + "/" + file
cmd = p4.run("edit",file)
print(cmd)
if (flag == 1):
scmd = p4.run("submit", "-d EditSubmit")
else:
self.addsubmit(user,client)
def deletesubmit(self,user,client):
client_dir="/home/perforce/" + client
os.chdir(client_dir)
p4client=user + "-" + client + "*"
p4.password ="User123#"
print(p4client)
flag=0
file=subprocess.Popen(["/home/perforce/get-del-file.sh", client.split('-')[0]], stdout=subprocess.PIPE).communicate()[0]
str= codecs.decode(file, 'UTF-8').strip()
client=str.split('-')[1] + "-" + str.split('-')[2]
p4.client=client
p4.user=user
str = client + "/" +str
dcmd = p4.run("delete",str)
if dcmd.count("already")>0:
self.deletesubmit(user,client)
time.sleep(2)
scmd = p4.run("submit", "-d DeleteSubmit")
def revert(self,user,client):
p4.user=user
callbash=subprocess.Popen(["/home/perforce/creatfiles.sh", user,client,"revert"])
callbash.wait()
client_dir="/home/perforce/" + client
os.chdir(client_dir)
p42ndclient=user + "-" + client + "-" + "*revert*"
p4.user=user
p4.password ="User123#"
p4.client = client
print(p42ndclient)
flag=0
filelist=[]
for file in glob.glob(p42ndclient):
flag=1
file = client + "/" + file
cmd = p4.run("add",file)
if cmd.count("existing")>0:
print("delete thsi fule Found!")
self.revert(user,client)
#print(cmd)
filelist.append(file)
if (flag == 1):
for f in filelist:
scmd = p4.run("revert", f)
print(scmd)
os.remove("/home/perforce/"+f)
else:
self.revert(user,client)
def disconnect(self,user,p4clients):
for name in p4clients:
dir = "/home/perforce/"+ name
filelist = glob.glob(os.path.join(dir, "*"))
for f in filelist:
print("file deleted ", f)
os.remove(f)
try:
p4.user = user
p4.password ="User123#"
cmd=p4.disconnect()
print(cmd)
except:
print ("An error occurred")
traceback.print_exception(*sys.exc_info())
p4=P4()
fd=5
class AddFiles(User):
#class AddFiles(TaskSet):
t1=Test()
p4clients= ["p4cli-client1","p4cli-client2","p4cli-client3","p4cli-client4","p4cli-client5"]
p4users= ["user1","user2","user3","user4","user5","user6","user7","user8","user9","user10","user11","user12","user13","user14","user15"]
uarr=0
carr=0
def on_start(self):
os.environ["P4PASSWD"]="User123#"
self.carr=random.randint(0, 4)
self.uarr=random.randint(0, 10)
self.t1.connect(self.p4users[self.uarr])
@task(3)
def add_files(self):
self.t1.addsubmit(self.p4users[self.uarr],self.p4clients[self.carr])
#print(self.p4users[self.uarr]," - " ,self.p4clients[self.carr])
time.sleep(2)
@task
def edit_files(self):
self.t1.editsubmit(self.p4users[self.uarr],self.p4clients[self.carr])
time.sleep(2)
@task
def delete_files(self):
self.t1.deletesubmit(self.p4users[self.uarr],self.p4clients[self.carr])
time.sleep(2)
@task
def revert(self):
self.t1.revert(self.p4users[self.uarr],self.p4clients[self.carr])
time.sleep(2)
def on_stop(self):
self.t1.disconnect(self.p4users[self.uarr],self.p4clients)
Comments
Post a Comment