You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2018/02/27 23:15:36 UTC
[3/3] allura git commit: [#8189] Adds testing util script to populate
lots of forum topics
[#8189] Adds testing util script to populate lots of forum topics
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/880090cf
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/880090cf
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/880090cf
Branch: refs/heads/master
Commit: 880090cf28bdf7cc7a775c1a08582bab4821d8d0
Parents: 8cae286
Author: Kenton Taylor <kt...@slashdotmedia.com>
Authored: Tue Feb 27 16:16:27 2018 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Feb 27 18:03:13 2018 -0500
----------------------------------------------------------------------
Allura/allura/lib/widgets/discuss.py | 3 ++
scripts/perf/load-up-forum.py | 74 +++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/880090cf/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 0a7e8b9..7afdac4 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -221,6 +221,9 @@ class SubscriptionForm(ew.SimpleForm):
class fields(ew_core.NameList):
page_list = ffw.PageList()
page_size = ffw.PageSize()
+
+ # Careful! using the same name as the prop on the model will invoke the RelationalProperty,
+ # causing all related entities to be (re)fetched.
_threads = _ThreadsTable()
def resources(self):
http://git-wip-us.apache.org/repos/asf/allura/blob/880090cf/scripts/perf/load-up-forum.py
----------------------------------------------------------------------
diff --git a/scripts/perf/load-up-forum.py b/scripts/perf/load-up-forum.py
new file mode 100644
index 0000000..2184411
--- /dev/null
+++ b/scripts/perf/load-up-forum.py
@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+import logging
+import uuid
+from ming.orm import ThreadLocalORMSession, session
+from pylons import tmpl_context as c
+from allura import model as M
+from forgediscussion.model import ForumPost, Forum
+from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, ArgumentTypeError
+from allura.lib import helpers as h
+from random import randint
+
+
+log = logging.getLogger(__name__)
+
+
+def arguments():
+ parser = ArgumentParser(description="Args for changing anon comment permissions",
+ formatter_class=ArgumentDefaultsHelpFormatter, )
+ parser.add_argument('shortname', help="shortname of project to change ")
+ parser.add_argument('mountpt', help="toolname ")
+ parser.add_argument('forumname', help="forum")
+
+ args = parser.parse_args()
+ return args
+
+
+def main():
+ args = arguments()
+
+ c.user = M.User.query.get(username='root')
+
+ with h.push_context(args.shortname, args.mountpt, neighborhood='Projects'):
+
+ tool = c.project.app_config_by_tool_type(args.mountpt)
+
+ # create tons of topics
+ discussion = Forum.query.get(
+ app_config_id=tool._id,
+ shortname=args.forumname)
+
+ for i in range(5000):
+ subject = 'fake topic {}'.format(str(i))
+ thd = discussion.thread_class()(discussion_id=discussion._id, subject=subject)
+ # subj = str(uuid.uuid4())[:8]
+ p = thd.post(subject, 'a new topic 2')
+
+ for j in range(randint(1, 5)):
+ new_post = {'text':'comment text'}
+ # post = thd.add_post(**new_post)
+ post = thd.add_post(text='comment text for real', subject="test subject")
+
+ if i % 1000:
+ session(p).flush()
+
+
+if __name__ == '__main__':
+ main()