Revision 9096ffbb snf-astakos-app/astakos/test/stress.py

b/snf-astakos-app/astakos/test/stress.py
47 47
os.environ['DJANGO_SETTINGS_MODULE'] = 'synnefo.settings'
48 48

  
49 49
from astakos.im.models import AstakosUser
50
from astakos.im.functions import get_related_project_id, ProjectError
50
from astakos.im.functions import ProjectError
51 51
from astakos.im import quotas
52 52
from views import submit, approve, join, leave
53 53
from snf_django.lib.db.transaction import commit_on_success_strict
......
86 86
        email=email, defaults=defaults)
87 87
    if created:
88 88
        quotas.qh_sync_user(u)
89
        return u.id, u.email
89
        return u
90 90
    return None
91 91

  
92 92

  
......
94 94
def new_users(count):
95 95
    for i in range(count):
96 96
        while True:
97
            result = new_user()
98
            if result is not None:
99
                uid, email = result
100
                USERS[uid] = email
97
            u = new_user()
98
            if u is not None:
99
                USERS[u.id] = u
101 100
                break
102 101

  
103 102

  
......
113 112
                           prefix=self.name)
114 113

  
115 114

  
116
def submit_and_approve(name, user_id, prec, repeat, prefix=""):
115
def submit_and_approve(name, user_id, project_id, repeat, prefix=""):
117 116
    if prefix:
118 117
        prefix += ' '
119 118

  
120 119
    for i in range(repeat):
121 120
        try:
122 121
            now = datetime.datetime.now()
123
            logger.info('%s%s: submitting with precursor %s'
124
                        % (prefix, now, prec))
125
            app_id = submit(name, user_id, prec)
126
            prec = app_id
122
            logger.info('%s%s: submitting for project %s'
123
                        % (prefix, now, project_id))
124
            app_id, project_id = submit(name, user_id, project_id)
127 125
        except ProjectError as e:
128
            logger.info('Limit reached')
126
            logger.info(e.message)
127
            continue
129 128
        except Exception as e:
130 129
            logger.exception(e)
131 130
            continue
132 131
        try:
133 132
            now = datetime.datetime.now()
134
            pid = get_related_project_id(app_id)
135 133
            logger.info('%s%s: approving application %s of project %s'
136
                        % (prefix, now, app_id, pid))
134
                        % (prefix, now, app_id, project_id))
137 135
            approve(app_id)
138
            PROJECTS[pid] = True
136
            PROJECTS[project_id] = True
139 137
        except Exception as e:
140 138
            logger.exception(e)
141 139

  
......
146 144
        threading.Thread.__init__(self, *args, **kwargs)
147 145

  
148 146
    def run(self):
149
        owner = choice(USERS.keys())
147
        user = choice(USERS.values())
150 148
        while True:
151 149
            projects = PROJECTS.keys()
152 150
            if projects:
153 151
                pid = choice(projects)
154 152
                break
155 153
            sleep(0.1)
156
        join_and_leave(pid, owner, self.repeat, prefix=self.name)
154
        join_and_leave(pid, user, self.repeat, prefix=self.name)
157 155

  
158 156

  
159
def join_and_leave(proj_id, user_id, repeat, prefix=""):
157
def join_and_leave(proj_id, user, repeat, prefix=""):
158
    user_id = user.id
160 159
    if prefix:
161 160
        prefix += ' '
162 161

  
......
165 164
            now = datetime.datetime.now()
166 165
            logger.info('%s%s: user %s joining project %s'
167 166
                        % (prefix, now, user_id, proj_id))
168
            join(proj_id, user_id)
167
            membership = join(proj_id, user)
169 168
        except ProjectError as e:
170
            logger.info('Membership already exists')
169
            logger.info(e.message)
170
            continue
171 171
        except Exception as e:
172 172
            logger.exception(e)
173

  
173
            continue
174 174
        try:
175 175
            now = datetime.datetime.now()
176 176
            logger.info('%s%s: user %s leaving project %s'
177 177
                        % (prefix, now, user_id, proj_id))
178
            leave(proj_id, user_id)
178
            leave(membership.id, user)
179 179
        except ProjectError as e:
180
            logger.info('No such membership')
180
            logger.info(e.message)
181 181
        except Exception as e:
182 182
            logger.exception(e)
183 183

  

Also available in: Unified diff