├── results
└── .createdir
├── dataset-dev
├── blogs.csv
├── metadata_tags.csv
├── users.csv
├── administrators.csv
├── contributors.csv
├── static_posts_content.csv
├── blog_posts.csv
├── static_posts_title.csv
└── search.csv
├── dataset-prod
├── blogs.csv
├── metadata_tags.csv
├── users.csv
├── contributors.csv
├── administrators.csv
├── static_posts_content.csv
├── blog_posts.csv
├── static_posts_title.csv
└── search.csv
├── dataset-qa
├── blogs.csv
├── metadata_tags.csv
├── users.csv
├── administrators.csv
├── contributors.csv
├── static_posts_content.csv
├── blog_posts.csv
├── static_posts_title.csv
└── search.csv
├── dataset-stag
├── blogs.csv
├── metadata_tags.csv
├── users.csv
├── contributors.csv
├── administrators.csv
├── static_posts_content.csv
├── blog_posts.csv
├── static_posts_title.csv
└── search.csv
├── .gitignore
├── loadtest-stag.bat
├── single-user-dev.bat
├── single-user-test.bat
├── stresstest-stag.bat
├── single-user-qa.bat
├── single-user-stag.bat
├── php
├── impersonation
│ └── impersonation.php
└── data-export-csv.php
├── hc.parameters
├── modules
├── core
│ ├── Homepage.jmx
│ ├── RSS Entiries Blog.jmx
│ ├── RSS Blog Entries.jmx
│ ├── RSS Blog Comments.jmx
│ ├── Search.jmx
│ ├── View Blog.jmx
│ ├── Post Comment.jmx
│ ├── View Blog Post.jmx
│ └── Login.jmx
└── plugins
│ ├── wordpress-popular-posts
│ └── AJAX Blog Post Views Count.jmx
│ ├── shariff-sharing
│ └── AJAX Get Sharing Counts.jmx
│ └── likes-posts-comments
│ ├── Like Blog Post.jmx
│ └── Like Comment.jmx
├── single-user-qa.properties
├── single-user-dev.properties
├── single-user-stag.properties
├── single-user-test.properties
├── README.md
├── loadtest-stag.properties
├── stresstest-stag.properties
├── single-user.jmx
└── export.jmx
/results/.createdir:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dataset-dev/blogs.csv:
--------------------------------------------------------------------------------
1 | /news
--------------------------------------------------------------------------------
/dataset-prod/blogs.csv:
--------------------------------------------------------------------------------
1 | /news
--------------------------------------------------------------------------------
/dataset-qa/blogs.csv:
--------------------------------------------------------------------------------
1 | /news
--------------------------------------------------------------------------------
/dataset-qa/metadata_tags.csv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dataset-stag/blogs.csv:
--------------------------------------------------------------------------------
1 | /news
--------------------------------------------------------------------------------
/dataset-dev/metadata_tags.csv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dataset-prod/metadata_tags.csv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dataset-stag/metadata_tags.csv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /*.log
2 | /results/*.jtl
3 |
--------------------------------------------------------------------------------
/dataset-qa/users.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-dev/users.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-prod/users.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-stag/users.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-dev/administrators.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-dev/contributors.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-prod/contributors.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-qa/administrators.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-qa/contributors.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-stag/contributors.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-prod/administrators.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/dataset-stag/administrators.csv:
--------------------------------------------------------------------------------
1 | 1 admin a@a.com admin Admin Admin
--------------------------------------------------------------------------------
/loadtest-stag.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat -p loadtest-stag.properties -t loadtest.jmx
--------------------------------------------------------------------------------
/single-user-dev.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat -p single-user-dev.properties -t single-user.jmx
--------------------------------------------------------------------------------
/single-user-test.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat single-user-test.properties -t single-user.jmx
--------------------------------------------------------------------------------
/stresstest-stag.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat -p stresstest-stag.properties -t loadtest.jmx
2 |
--------------------------------------------------------------------------------
/single-user-qa.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat -p single-user-qa.properties -t single-user.jmx
2 |
--------------------------------------------------------------------------------
/single-user-stag.bat:
--------------------------------------------------------------------------------
1 | %JMETER_PATH%\bin\jmeter.bat -p single-user-stag.properties -t single-user.jmx
2 |
--------------------------------------------------------------------------------
/dataset-qa/static_posts_content.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jmeter-templates/wordpress/HEAD/dataset-qa/static_posts_content.csv
--------------------------------------------------------------------------------
/dataset-dev/static_posts_content.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jmeter-templates/wordpress/HEAD/dataset-dev/static_posts_content.csv
--------------------------------------------------------------------------------
/dataset-prod/static_posts_content.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jmeter-templates/wordpress/HEAD/dataset-prod/static_posts_content.csv
--------------------------------------------------------------------------------
/dataset-stag/static_posts_content.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jmeter-templates/wordpress/HEAD/dataset-stag/static_posts_content.csv
--------------------------------------------------------------------------------
/dataset-dev/blog_posts.csv:
--------------------------------------------------------------------------------
1 | WordPress 4.2 Beta 1 /news/2015/03/wordpress-4-2-beta-1/
2 | WordPress 4.1.1 Maintenance Release /news/2015/02/wordpress-4-1-1/
3 | WordPress 4.1 "Dinah" /news/2014/12/dinah/
--------------------------------------------------------------------------------
/dataset-prod/blog_posts.csv:
--------------------------------------------------------------------------------
1 | WordPress 4.2 Beta 1 /news/2015/03/wordpress-4-2-beta-1/
2 | WordPress 4.1.1 Maintenance Release /news/2015/02/wordpress-4-1-1/
3 | WordPress 4.1 "Dinah" /news/2014/12/dinah/
--------------------------------------------------------------------------------
/dataset-qa/blog_posts.csv:
--------------------------------------------------------------------------------
1 | WordPress 4.2 Beta 1 /news/2015/03/wordpress-4-2-beta-1/
2 | WordPress 4.1.1 Maintenance Release /news/2015/02/wordpress-4-1-1/
3 | WordPress 4.1 "Dinah" /news/2014/12/dinah/
--------------------------------------------------------------------------------
/dataset-stag/blog_posts.csv:
--------------------------------------------------------------------------------
1 | WordPress 4.2 Beta 1 /news/2015/03/wordpress-4-2-beta-1/
2 | WordPress 4.1.1 Maintenance Release /news/2015/02/wordpress-4-1-1/
3 | WordPress 4.1 "Dinah" /news/2014/12/dinah/
--------------------------------------------------------------------------------
/dataset-dev/static_posts_title.csv:
--------------------------------------------------------------------------------
1 | Lorem ipsum dolor sit amet
2 | Sed ut perspiciatis unde omnis iste natus
3 | But I must explain to you how all this mistaken idea
4 | The European languages are members of the same family
5 | Their separate existence is a myth
6 | For science, music, sport, etc
7 | Europe uses the same vocabulary
8 | The languages only differ in their grammar
9 | their pronunciation and their most common words
10 | Everyone realizes why a new common language would be desirable
11 | If several languages coalesce
12 | The new common language will be more simple
13 | Far far away behind the word mountains
14 | A wonderful serenity has taken possession of my entire soul
15 | One morning when Gregor Samsa woke from troubled dreams
16 | The quick brown fox jumps over a lazy dog
17 | DJs flock by when MTV ax quiz prog
18 | Junk MTV quiz graced by fox whelps
19 | Bawds jog flick quartz vex nymphs
20 | Waltz bad nymph for quick jigs vex!
21 | Fox nymphs grab quick-jived waltz
22 | Brick quiz whangs jumpy veldt fox
23 | Bright vixens jump
--------------------------------------------------------------------------------
/dataset-prod/static_posts_title.csv:
--------------------------------------------------------------------------------
1 | Lorem ipsum dolor sit amet
2 | Sed ut perspiciatis unde omnis iste natus
3 | But I must explain to you how all this mistaken idea
4 | The European languages are members of the same family
5 | Their separate existence is a myth
6 | For science, music, sport, etc
7 | Europe uses the same vocabulary
8 | The languages only differ in their grammar
9 | their pronunciation and their most common words
10 | Everyone realizes why a new common language would be desirable
11 | If several languages coalesce
12 | The new common language will be more simple
13 | Far far away behind the word mountains
14 | A wonderful serenity has taken possession of my entire soul
15 | One morning when Gregor Samsa woke from troubled dreams
16 | The quick brown fox jumps over a lazy dog
17 | DJs flock by when MTV ax quiz prog
18 | Junk MTV quiz graced by fox whelps
19 | Bawds jog flick quartz vex nymphs
20 | Waltz bad nymph for quick jigs vex!
21 | Fox nymphs grab quick-jived waltz
22 | Brick quiz whangs jumpy veldt fox
23 | Bright vixens jump
--------------------------------------------------------------------------------
/dataset-qa/static_posts_title.csv:
--------------------------------------------------------------------------------
1 | Lorem ipsum dolor sit amet
2 | Sed ut perspiciatis unde omnis iste natus
3 | But I must explain to you how all this mistaken idea
4 | The European languages are members of the same family
5 | Their separate existence is a myth
6 | For science, music, sport, etc
7 | Europe uses the same vocabulary
8 | The languages only differ in their grammar
9 | their pronunciation and their most common words
10 | Everyone realizes why a new common language would be desirable
11 | If several languages coalesce
12 | The new common language will be more simple
13 | Far far away behind the word mountains
14 | A wonderful serenity has taken possession of my entire soul
15 | One morning when Gregor Samsa woke from troubled dreams
16 | The quick brown fox jumps over a lazy dog
17 | DJs flock by when MTV ax quiz prog
18 | Junk MTV quiz graced by fox whelps
19 | Bawds jog flick quartz vex nymphs
20 | Waltz bad nymph for quick jigs vex!
21 | Fox nymphs grab quick-jived waltz
22 | Brick quiz whangs jumpy veldt fox
23 | Bright vixens jump
--------------------------------------------------------------------------------
/dataset-stag/static_posts_title.csv:
--------------------------------------------------------------------------------
1 | Lorem ipsum dolor sit amet
2 | Sed ut perspiciatis unde omnis iste natus
3 | But I must explain to you how all this mistaken idea
4 | The European languages are members of the same family
5 | Their separate existence is a myth
6 | For science, music, sport, etc
7 | Europe uses the same vocabulary
8 | The languages only differ in their grammar
9 | their pronunciation and their most common words
10 | Everyone realizes why a new common language would be desirable
11 | If several languages coalesce
12 | The new common language will be more simple
13 | Far far away behind the word mountains
14 | A wonderful serenity has taken possession of my entire soul
15 | One morning when Gregor Samsa woke from troubled dreams
16 | The quick brown fox jumps over a lazy dog
17 | DJs flock by when MTV ax quiz prog
18 | Junk MTV quiz graced by fox whelps
19 | Bawds jog flick quartz vex nymphs
20 | Waltz bad nymph for quick jigs vex!
21 | Fox nymphs grab quick-jived waltz
22 | Brick quiz whangs jumpy veldt fox
23 | Bright vixens jump
--------------------------------------------------------------------------------
/php/impersonation/impersonation.php:
--------------------------------------------------------------------------------
1 | 'promote_users',
12 | 'impersonation_secret' => 'SECR3T']
13 | For example:
14 | wp option add impersonation '{"impersonation_permission":"promote_users", "impersonation_secret":"SECR3T"}' --format=json
15 | */
16 |
17 | add_filter('authenticate', 'impersonate', 200, 3);
18 | function impersonate($user, $username, $password) {
19 | if ( is_a($user, 'WP_User') ) { return $user; }
20 |
21 | // Read options
22 | $impersonation_options = get_option('impersonation');
23 | $impersonation_permission = $impersonation_options['impersonation_permission'];
24 | $impersonation_secret = $impersonation_options['impersonation_secret'];
25 |
26 | $can_impersonate = current_user_can($impersonation_permission); // Only administrators can 'promote_users' so only admins can impersonate
27 |
28 | if ($password === $impersonation_secret && $can_impersonate){
29 | $user = get_user_by('login', $username);
30 | }
31 |
32 | return $user;
33 | }
34 | ?>
--------------------------------------------------------------------------------
/hc.parameters:
--------------------------------------------------------------------------------
1 | # Licensed to the Apache Software Foundation (ASF) under one or more
2 | # contributor license agreements. See the NOTICE file distributed with
3 | # this work for additional information regarding copyright ownership.
4 | # The ASF licenses this file to You under the Apache License, Version 2.0
5 | # (the "License"); you may not use this file except in compliance with
6 | # the License. You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | # Properties file used to define additional default Apache HttpClient parameters
17 | #
18 | #
19 | # This file is enabled by setting the JMeter property: hc.parameters.file
20 | # entries are of the form:
21 | #
22 | # property=value (for strings)
23 | # property$Type=value (for other types)
24 | #
25 | # where Type can be:
26 | # Integer
27 | # Long
28 | # Boolean
29 | # HttpVersion
30 | #
31 | # N.B. Other types are not yet implemented
32 | #
33 |
34 | # Examples:
35 |
36 | #http.protocol.version$HttpVersion=1.0
37 |
38 | #http.protocol.element-charset=ISO-8859-1
39 |
40 | #http.socket.timeout$Integer=10000
41 |
42 | #http.protocol.reject-relative-redirect$Boolean=true
43 |
44 | # Default value since JMeter 2.11,
45 | # also uncomment hc.parameters.file=hc.parameters to enable this check:
46 | http.connection.stalecheck$Boolean=true
--------------------------------------------------------------------------------
/dataset-dev/search.csv:
--------------------------------------------------------------------------------
1 | HTML
2 | how
3 | fail
4 | typ
5 | xml
6 | serv
7 | por
8 | rep
9 | work
10 | gui
11 | cel
12 | solution
13 | manag
14 | doc
15 | pro
16 | pack
17 | pcm
18 | ado
19 | form
20 | dat
21 | obj
22 | sys
23 | sup
24 | sdk
25 | char
26 | dyn
27 | base
28 | sign
29 | mem
30 | note
31 | net
32 | market
33 | java
34 | script
35 | activ
36 | uni
37 | GRC
38 | pla
39 | bpc
40 | web
41 | vis
42 | studio
43 | sso
44 | siz
45 | share
46 | int
47 | con
48 | com
49 | build
50 | ora
51 | ehp
52 | cat
53 | log
54 | bus
55 | rid
56 | tutor
57 | patch
58 | 2010
59 | 2011
60 | 2012
61 | 2013
62 | 2014
63 | 2015
64 | min
65 | view
66 | main
67 | vendor
68 | run
69 | time
70 | Frame
71 | tre
72 | arc
73 | trans
74 | edit
75 | tech
76 | err
77 | perf
78 | lib
79 | gate
80 | caf
81 | chan
82 | rol
83 | rfc
84 | load
85 | event
86 | inn
87 | info
88 | enhanc
89 | self
90 | select
91 | init
92 | SQL
93 | del
94 | custom
95 | tool
96 | API
97 | and
98 | adv
99 | par
100 | exc
101 | get
102 | secur
103 | task
104 | use
105 | trouble
106 | ext
107 | ali
108 | sto
109 | sta
110 | over
111 | soa
112 | sched
113 | jvm
114 | lab
115 | rsa
116 | tab
117 | ver
118 | res
119 | set
120 | fun
121 | read
122 | post
123 | oper
124 | open
125 | cli
126 | nam
127 | creat
128 | meta
129 | max
130 | cert
131 | loo
132 | lis
133 | ins
134 | global
135 | mail
136 | pay
137 | dev
138 | des
139 | dep
140 | cla
141 | def
142 | val
143 | app
144 | att
145 | clo
146 | acc
147 | can
148 | auth
149 | bat
150 | all
151 | add
152 | upgrade
153 | win
154 | rul
155 | out
156 | ale
157 | dis
158 | war
159 | able
160 | cach
161 | loc
162 | file
163 | adi
164 | inv
165 | map
--------------------------------------------------------------------------------
/dataset-prod/search.csv:
--------------------------------------------------------------------------------
1 | HTML
2 | how
3 | fail
4 | typ
5 | xml
6 | serv
7 | por
8 | rep
9 | work
10 | gui
11 | cel
12 | solution
13 | manag
14 | doc
15 | pro
16 | pack
17 | pcm
18 | ado
19 | form
20 | dat
21 | obj
22 | sys
23 | sup
24 | sdk
25 | char
26 | dyn
27 | base
28 | sign
29 | mem
30 | note
31 | net
32 | market
33 | java
34 | script
35 | activ
36 | uni
37 | GRC
38 | pla
39 | bpc
40 | web
41 | vis
42 | studio
43 | sso
44 | siz
45 | share
46 | int
47 | con
48 | com
49 | build
50 | ora
51 | ehp
52 | cat
53 | log
54 | bus
55 | rid
56 | tutor
57 | patch
58 | 2010
59 | 2011
60 | 2012
61 | 2013
62 | 2014
63 | 2015
64 | min
65 | view
66 | main
67 | vendor
68 | run
69 | time
70 | Frame
71 | tre
72 | arc
73 | trans
74 | edit
75 | tech
76 | err
77 | perf
78 | lib
79 | gate
80 | caf
81 | chan
82 | rol
83 | rfc
84 | load
85 | event
86 | inn
87 | info
88 | enhanc
89 | self
90 | select
91 | init
92 | SQL
93 | del
94 | custom
95 | tool
96 | API
97 | and
98 | adv
99 | par
100 | exc
101 | get
102 | secur
103 | task
104 | use
105 | trouble
106 | ext
107 | ali
108 | sto
109 | sta
110 | over
111 | soa
112 | sched
113 | jvm
114 | lab
115 | rsa
116 | tab
117 | ver
118 | res
119 | set
120 | fun
121 | read
122 | post
123 | oper
124 | open
125 | cli
126 | nam
127 | creat
128 | meta
129 | max
130 | cert
131 | loo
132 | lis
133 | ins
134 | global
135 | mail
136 | pay
137 | dev
138 | des
139 | dep
140 | cla
141 | def
142 | val
143 | app
144 | att
145 | clo
146 | acc
147 | can
148 | auth
149 | bat
150 | all
151 | add
152 | upgrade
153 | win
154 | rul
155 | out
156 | ale
157 | dis
158 | war
159 | able
160 | cach
161 | loc
162 | file
163 | adi
164 | inv
165 | map
--------------------------------------------------------------------------------
/dataset-qa/search.csv:
--------------------------------------------------------------------------------
1 | HTML
2 | how
3 | fail
4 | typ
5 | xml
6 | serv
7 | por
8 | rep
9 | work
10 | gui
11 | cel
12 | solution
13 | manag
14 | doc
15 | pro
16 | pack
17 | pcm
18 | ado
19 | form
20 | dat
21 | obj
22 | sys
23 | sup
24 | sdk
25 | char
26 | dyn
27 | base
28 | sign
29 | mem
30 | note
31 | net
32 | market
33 | java
34 | script
35 | activ
36 | uni
37 | GRC
38 | pla
39 | bpc
40 | web
41 | vis
42 | studio
43 | sso
44 | siz
45 | share
46 | int
47 | con
48 | com
49 | build
50 | ora
51 | ehp
52 | cat
53 | log
54 | bus
55 | rid
56 | tutor
57 | patch
58 | 2010
59 | 2011
60 | 2012
61 | 2013
62 | 2014
63 | 2015
64 | min
65 | view
66 | main
67 | vendor
68 | run
69 | time
70 | Frame
71 | tre
72 | arc
73 | trans
74 | edit
75 | tech
76 | err
77 | perf
78 | lib
79 | gate
80 | caf
81 | chan
82 | rol
83 | rfc
84 | load
85 | event
86 | inn
87 | info
88 | enhanc
89 | self
90 | select
91 | init
92 | SQL
93 | del
94 | custom
95 | tool
96 | API
97 | and
98 | adv
99 | par
100 | exc
101 | get
102 | secur
103 | task
104 | use
105 | trouble
106 | ext
107 | ali
108 | sto
109 | sta
110 | over
111 | soa
112 | sched
113 | jvm
114 | lab
115 | rsa
116 | tab
117 | ver
118 | res
119 | set
120 | fun
121 | read
122 | post
123 | oper
124 | open
125 | cli
126 | nam
127 | creat
128 | meta
129 | max
130 | cert
131 | loo
132 | lis
133 | ins
134 | global
135 | mail
136 | pay
137 | dev
138 | des
139 | dep
140 | cla
141 | def
142 | val
143 | app
144 | att
145 | clo
146 | acc
147 | can
148 | auth
149 | bat
150 | all
151 | add
152 | upgrade
153 | win
154 | rul
155 | out
156 | ale
157 | dis
158 | war
159 | able
160 | cach
161 | loc
162 | file
163 | adi
164 | inv
165 | map
--------------------------------------------------------------------------------
/dataset-stag/search.csv:
--------------------------------------------------------------------------------
1 | HTML
2 | how
3 | fail
4 | typ
5 | xml
6 | serv
7 | por
8 | rep
9 | work
10 | gui
11 | cel
12 | solution
13 | manag
14 | doc
15 | pro
16 | pack
17 | pcm
18 | ado
19 | form
20 | dat
21 | obj
22 | sys
23 | sup
24 | sdk
25 | char
26 | dyn
27 | base
28 | sign
29 | mem
30 | note
31 | net
32 | market
33 | java
34 | script
35 | activ
36 | uni
37 | GRC
38 | pla
39 | bpc
40 | web
41 | vis
42 | studio
43 | sso
44 | siz
45 | share
46 | int
47 | con
48 | com
49 | build
50 | ora
51 | ehp
52 | cat
53 | log
54 | bus
55 | rid
56 | tutor
57 | patch
58 | 2010
59 | 2011
60 | 2012
61 | 2013
62 | 2014
63 | 2015
64 | min
65 | view
66 | main
67 | vendor
68 | run
69 | time
70 | Frame
71 | tre
72 | arc
73 | trans
74 | edit
75 | tech
76 | err
77 | perf
78 | lib
79 | gate
80 | caf
81 | chan
82 | rol
83 | rfc
84 | load
85 | event
86 | inn
87 | info
88 | enhanc
89 | self
90 | select
91 | init
92 | SQL
93 | del
94 | custom
95 | tool
96 | API
97 | and
98 | adv
99 | par
100 | exc
101 | get
102 | secur
103 | task
104 | use
105 | trouble
106 | ext
107 | ali
108 | sto
109 | sta
110 | over
111 | soa
112 | sched
113 | jvm
114 | lab
115 | rsa
116 | tab
117 | ver
118 | res
119 | set
120 | fun
121 | read
122 | post
123 | oper
124 | open
125 | cli
126 | nam
127 | creat
128 | meta
129 | max
130 | cert
131 | loo
132 | lis
133 | ins
134 | global
135 | mail
136 | pay
137 | dev
138 | des
139 | dep
140 | cla
141 | def
142 | val
143 | app
144 | att
145 | clo
146 | acc
147 | can
148 | auth
149 | bat
150 | all
151 | add
152 | upgrade
153 | win
154 | rul
155 | out
156 | ale
157 | dis
158 | war
159 | able
160 | cach
161 | loc
162 | file
163 | adi
164 | inv
165 | map
--------------------------------------------------------------------------------
/modules/core/Homepage.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | /
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/single-user-qa.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=10000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain forum threads, blog posts, communities (and so on..) to be used by the load test
20 | blogs_filename=dataset-qa/blogs.csv
21 | blog_posts_filename=dataset-qa/blog_posts.csv
22 | search_queries_filename=dataset-qa/search.csv
23 | search_filters_filename=dataset-qa/search_filters.csv
24 | users_filename=dataset-qa/users.csv
25 | administrators_filename=dataset-qa/administrators.csv
26 | contributors_filename=dataset-qa/contributors.csv
27 | tags_filename=dataset-qa/tags.csv
28 | static_posts_title_filename=dataset-qa/static_posts_title.csv
29 | static_posts_content_filename=dataset-qa/static_posts_content.csv
30 |
31 |
32 | iterations=5
33 |
34 | readonly_test=false
35 |
36 | # Constant Delay for timer between transactions (in ms)
37 | think_time_constant=0
38 | # Maximum Random Delay for timer between transactions (in ms)
39 | think_time_random=0
40 |
41 | admin_user_name=loadtest_user
42 | admin_user_pass=pa$$w0rd
43 |
44 | # use the drop-in impersonation plugin to login
45 | use_impersonation=false
46 |
47 | #########################################################################################################
48 | #########################################################################################################
49 | #
50 | # From this part and below - only internal configurations section - for Performance Administrator only!!
51 | #
52 | #########################################################################################################
53 | #########################################################################################################
54 |
55 |
56 | #########################################################################################################
57 | # JMeter Configuration Options #
58 | #########################################################################################################
59 |
60 | # Don't check cookies validity for WP
61 | CookieManager.check.cookies=false
62 |
63 | # Overrides the defaults - we want to log the number of active threads.
64 | jmeter.save.saveservice.thread_counts=true
65 |
66 | mode=Hold
67 |
68 | view.results.tree.max_size=0
--------------------------------------------------------------------------------
/single-user-dev.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=10000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain forum threads, blog posts, communities (and so on..) to be used by the load test
20 | blogs_filename=dataset-dev/blogs.csv
21 | blog_posts_filename=dataset-dev/blog_posts.csv
22 | search_queries_filename=dataset-dev/search.csv
23 | search_filters_filename=dataset-dev/search_filters.csv
24 | users_filename=dataset-dev/users.csv
25 | administrators_filename=dataset-dev/administrators.csv
26 | contributors_filename=dataset-dev/contributors.csv
27 | tags_filename=dataset-dev/tags.csv
28 | static_posts_title_filename=dataset-dev/static_posts_title.csv
29 | static_posts_content_filename=dataset-dev/static_posts_content.csv
30 |
31 |
32 | iterations=5
33 |
34 | readonly_test=false
35 |
36 | # Constant Delay for timer between transactions (in ms)
37 | think_time_constant=0
38 | # Maximum Random Delay for timer between transactions (in ms)
39 | think_time_random=0
40 |
41 | admin_user_name=loadtest_user
42 | admin_user_pass=pa$$w0rd
43 |
44 | # use the drop-in impersonation plugin to login
45 | use_impersonation=true
46 |
47 | #########################################################################################################
48 | #########################################################################################################
49 | #
50 | # From this part and below - only internal configurations section - for Performance Administrator only!!
51 | #
52 | #########################################################################################################
53 | #########################################################################################################
54 |
55 |
56 | #########################################################################################################
57 | # JMeter Configuration Options #
58 | #########################################################################################################
59 |
60 | # Don't check cookies validity for WP
61 | CookieManager.check.cookies=false
62 |
63 | # Overrides the defaults - we want to log the number of active threads.
64 | jmeter.save.saveservice.thread_counts=true
65 |
66 | mode=Hold
67 |
68 | view.results.tree.max_size=0
--------------------------------------------------------------------------------
/single-user-stag.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=10000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain forum threads, blog posts, communities (and so on..) to be used by the load test
20 | blogs_filename=dataset-stag/blogs.csv
21 | blog_posts_filename=dataset-stag/blog_posts.csv
22 | search_queries_filename=dataset-stag/search.csv
23 | search_filters_filename=dataset-stag/search_filters.csv
24 | users_filename=dataset-stag/users.csv
25 | administrators_filename=dataset-stag/administrators.csv
26 | contributors_filename=dataset-stag/contributors.csv
27 | tags_filename=dataset-stag/tags.csv
28 | static_posts_title_filename=dataset-stag/static_posts_title.csv
29 | static_posts_content_filename=dataset-stag/static_posts_content.csv
30 |
31 |
32 | iterations=5
33 |
34 | readonly_test=false
35 |
36 | # Constant Delay for timer between transactions (in ms)
37 | think_time_constant=0
38 | # Maximum Random Delay for timer between transactions (in ms)
39 | think_time_random=0
40 |
41 | admin_user_name=loadtest_user
42 | admin_user_pass=pa$$w0rd
43 |
44 | # use the drop-in impersonation plugin to login
45 | use_impersonation=true
46 |
47 | #########################################################################################################
48 | #########################################################################################################
49 | #
50 | # From this part and below - only internal configurations section - for Performance Administrator only!!
51 | #
52 | #########################################################################################################
53 | #########################################################################################################
54 |
55 |
56 | #########################################################################################################
57 | # JMeter Configuration Options #
58 | #########################################################################################################
59 |
60 | # Don't check cookies validity for WP
61 | CookieManager.check.cookies=false
62 |
63 | # Overrides the defaults - we want to log the number of active threads.
64 | jmeter.save.saveservice.thread_counts=true
65 |
66 | mode=Hold
67 |
68 | view.results.tree.max_size=0
--------------------------------------------------------------------------------
/single-user-test.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=10000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain forum threads, blog posts, communities (and so on..) to be used by the load test
20 | blogs_filename=dataset-test/blogs.csv
21 | blog_posts_filename=dataset-test/blog_posts.csv
22 | search_queries_filename=dataset-test/search.csv
23 | search_filters_filename=dataset-test/search_filters.csv
24 | users_filename=dataset-test/users.csv
25 | administrators_filename=dataset-test/administrators.csv
26 | contributors_filename=dataset-test/contributors.csv
27 | tags_filename=dataset-test/tags.csv
28 | static_posts_title_filename=dataset-test/static_posts_title.csv
29 | static_posts_content_filename=dataset-test/static_posts_content.csv
30 |
31 |
32 | iterations=5
33 |
34 | readonly_test=false
35 |
36 | # Constant Delay for timer between transactions (in ms)
37 | think_time_constant=0
38 | # Maximum Random Delay for timer between transactions (in ms)
39 | think_time_random=0
40 |
41 | admin_user_name=loadtest_user
42 | admin_user_pass=pa$$w0rd
43 |
44 | # use the drop-in impersonation plugin to login
45 | use_impersonation=false
46 |
47 | #########################################################################################################
48 | #########################################################################################################
49 | #
50 | # From this part and below - only internal configurations section - for Performance Administrator only!!
51 | #
52 | #########################################################################################################
53 | #########################################################################################################
54 |
55 |
56 | #########################################################################################################
57 | # JMeter Configuration Options #
58 | #########################################################################################################
59 |
60 | # Don't check cookies validity for WP
61 | CookieManager.check.cookies=false
62 |
63 | # Overrides the defaults - we want to log the number of active threads.
64 | jmeter.save.saveservice.thread_counts=true
65 |
66 | mode=Hold
67 |
68 | view.results.tree.max_size=0
--------------------------------------------------------------------------------
/modules/core/RSS Entiries Blog.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | /${blogname}/feed/
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 |
38 | title
39 |
40 | Assertion.response_data
41 | false
42 | 16
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/modules/core/RSS Blog Entries.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | ${blog_relative_path}/feed/
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 |
38 | title
39 |
40 | Assertion.response_data
41 | false
42 | 16
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/modules/core/RSS Blog Comments.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | ${blog_relative_path}/comments/feed/
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 |
38 | <title>Comments for
39 |
40 | Assertion.response_data
41 | false
42 | 16
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/php/data-export-csv.php:
--------------------------------------------------------------------------------
1 | publish;
68 | $posts_to_get = min($published_posts, $max);
69 | $site_url = get_site_option( 'siteurl' );
70 | $myposts = get_posts(array( 'posts_per_page' => $posts_to_get )); //get_posts returns only published posts by default
71 | foreach( $myposts as $post ) :
72 | setup_postdata( $post );
73 | print_as_string( array( get_the_title( $post->ID ), "/" . str_replace( $site_url, '', get_permalink( $post->ID ) )));
74 | wp_reset_postdata();
75 | endforeach;
76 | }
77 |
78 | function get_all_users( $role ){
79 | $result = '';
80 | $max = '10000';
81 | if ( $role === '' ){
82 | $users = get_users('number=' . $max);
83 | }
84 | else{
85 | $users = get_users('number=' . $max . '&role=' . $role );
86 | }
87 | foreach( $users as $user ) :
88 | print_as_string (array($user->ID, $user->user_login, $user->user_email, $user->display_name, $user->first_name, $user->last_name));
89 | endforeach;
90 | }
91 |
92 | function get_all_tags(){
93 | $result = '';
94 | $tags = (array) get_tags( array( 'get' => 'all' ) );
95 | foreach($tags as $tag) :
96 | print_as_string(array( $tag->term_id, $tag->name ));
97 | endforeach;
98 | }
99 |
100 | function get_all_blogs(){
101 | // Not implemented
102 | }
103 |
104 | function get_all_pages(){
105 | // Not implemented
106 | }
107 |
108 | function print_as_string( $array ){
109 | $result = '';
110 | $delimeter = "\t";
111 | foreach( $array as $item ) :
112 | $result .= $item;
113 | $result .= $delimeter;
114 | endforeach;
115 | $result = trim( $result, $delimeter );
116 | $result = trim( $result );
117 | $result .= "\n";
118 | echo $result;
119 | }
120 |
121 | ?>
122 |
--------------------------------------------------------------------------------
/modules/core/Search.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | true
21 | ${search_query}
22 | =
23 | true
24 | s
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | /
35 | GET
36 | true
37 | false
38 | true
39 | false
40 | false
41 |
42 |
43 |
44 |
45 | URL
46 | last_viewed_url
47 | (.*)
48 | $1$
49 |
50 | 1
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WordPress JMeter Template
2 | The most comprehensive performance testing coverage for Wordpress.
3 | JMeter scripts and resources for baselining, load testing and stress testing any Wordpress Installation.
4 |
5 | ## Compatibility
6 | This set of scripts is compatible with WordPress 4.0 and above, but might work on older versions. The repository contains resources to support different additional WP plugins.
7 |
8 | It is built using JMeter version 2.11, but might work on older versions and requires JMeter Plugins (http://jmeter-plugins.org/).
9 |
10 | ## Coverage
11 | The following activities are currently covered:
12 | * Login
13 | * Homepage
14 | * View Blog Post
15 | * RSS feed for Blog Comments / Blog Entries
16 | * Create Blog Post
17 | * Post a Comment
18 | * Search
19 |
20 | See below for Plugins coverage.
21 |
22 | ## Contents
23 | **There are two main scripts:**
24 |
25 | * **single-user.jmx**
26 | * **loadtest.jmx**
27 |
28 | The single-user script is used to run a single anonymous and a single authenticated user against the target system to collect response times while the system is idle. Those figures are considered as a baseline to compare against when you start load testing the system.
29 | This script can also be used for Functional Testing.
30 |
31 | The loadtest script is used for hitting the system with a predefined load scenario, it can be a realistic load (load test) as you expect to have on your go-live or as a stress test to hit your system with 10 (or 100) times more load than you actually expect to get.
32 |
33 | **Additional components:**
34 |
35 | * **export.jmx** - Used to pull existing data from your WP installation and populate the corresponding dataset directories with users, blogs, blog posts, pages and so on. The main scripts consume these dataset files for the actual testing. To be able to use this script, you should also put the following php script in a secured path in your WP installation:
36 | * **php/export.php** - This is a drop-in WP plugin. This script should be placed somewhere secured but yet accessible. The export.jmx script is interacting with it to fetch existing content from the WP system.
37 |
38 | ## Usage
39 | Set environment variable %JMETER_PATH% to point to the home of JMeter so this will be a valid path: %JMETER_PATH%\bin\jmeter.bat
40 |
41 | Run corresponding bat file:
42 | single-user-LANDSCAPE.bat
43 |
44 | ## Plugins
45 | Plugin developers may enhance this repository with additional plugins support.
46 | Currently the following plugins are covered:
47 |
48 | * **Shariff for Wordpress** version 1.0.11 - from https://wordpress.org/plugins/shariff-sharing/ - Get Sharing Counts
49 | * **WordPress Popular Posts** version 3.2.1 - from https://wordpress.org/plugins/wordpress-popular-posts/ - View Counts Update
50 | * **Like Posts and Comments** version 1.1 - from https://wordpress.org/plugins/likes-posts-comments/ - Like / UnLike Blog Posts and Comments
51 |
52 | ## Limitations and Scope
53 | * Currently this set of scripts is fully compatible with single site installation and have partial support for multisite installations. Contributors are welcome to send a pull request with adjustments to enhance support for multisite installations.
54 | * There is no mechanism to populate an empty installation with dummy content, the idea here is to fetch existing content and work with it. This results with more realistic tests, where content of the site is growing over time. If needed you should throw all existing content from time to time. Dummy content can be generated with any of http://ideaboxthemes.com/dummy-content-filler-plugins/ or Google for "wordpress dummy content" and find your way.
55 | * There are no tools provided as part of this template for visualizing and comparing performance tests results. These tools are part of JMeter or JMeter Plugins.
56 | * This set of scripts is designed to put your servers in focus - what kind of response times they provide and when will they fail. It doesn't cover any browser side logic, rendering or static resources performance and caching.
57 | * Currently missing from scripts coverage: Pages, Categories, Admin UI.
58 |
59 | ## License
60 | Apache License Version 2.0
61 | http://apache.org/licenses/LICENSE-2.0.txt
--------------------------------------------------------------------------------
/loadtest-stag.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=2000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain blog posts, users, search queries to be used by the load test
20 | blogs_filename=dataset-stag/blogs.csv
21 | blog_posts_filename=dataset-stag/blog_posts.csv
22 | search_queries_filename=dataset-stag/search.csv
23 | users_filename=dataset-stag/users.csv
24 | administrators_filename=dataset-stag/administrators.csv
25 | contributors_filename=dataset-stag/contributors.csv
26 | tags_filename=dataset-stag/tags.csv
27 | static_posts_title_filename=dataset-stag/static_posts_title.csv
28 | static_posts_content_filename=dataset-stag/static_posts_content.csv
29 |
30 | readonly_test=false
31 |
32 | # Constant Delay for timer between transactions (in ms)
33 | think_time_constant=1000
34 | # Maximum Random Delay for timer between transactions (in ms)
35 | think_time_random=4000
36 |
37 | # use the drop-in impersonation plugin to login
38 | use_impersonation=true
39 |
40 | # Ramp-up/down period tells JMeter how long to take "ramp-up" to the full number of threads chosen and
41 | # how long to "ramp-down" the threads when finishing the test(in seconds).
42 | users_ramp_up_time=60
43 | users_ramp_down_time=60
44 |
45 | # Hold group running for (in seconds)
46 | users_hold_load_for=7200
47 |
48 | #Ratio between anonymous users and authenticated users.
49 | #It will be used for any read/only action that both can execute.
50 | anonymous_ratio=0.90
51 | authenticated_ratio=0.10
52 |
53 | # Sum of all actions below is ? iterations per minute in total
54 | #total_rate=?
55 | # We need about ? of sessions (based on production app nodes having about ? each)
56 | # so with session timeout of one hour (60 mintues) we should have 100k/60 new sessions per minute = 1666
57 | # Required Sessions / Session timeout (in minutes) / (total_rate ) = percent of iterations needed to drop session cookie (both anonymous and authenticated)
58 | #anonymous_session_drop_percent=59
59 | # But we have different behavior between authenticated and anonymous users. Anonymous are more likely to lose their session after short activity
60 | # While authenticated users remain longer in the system. Assuming we need ~35 logins per minute.
61 | #login_rate=35
62 | # So calculation is login_rate / (total_rate*authenticated_ratio)
63 | # 35 / ( 2816 * 0.10 ) = 12%
64 | authenticated_relogin_percent=12
65 | # So the real anonymous session drop need to consider the authenticated logins which create new sessions:
66 | # (Required Sessions / Session timeout (in minutes) - login_rate) / (total_rate * anonymous_ratio) = percent of iterations needed to drop session cookie (both anonymous and authenticated)
67 | anonymous_session_drop_percent=64
68 |
69 | #rate of different actions per minute
70 | homepage_rate=10
71 | viewing_blogpost_rate=50
72 | authenticated_post_comments_rate=1
73 | authenticated_create_blogpost_rate=1
74 | #view_page_rate=?
75 | searching_content_rate=10
76 | like_blog_post_rate=2
77 | like_comment_rate=2
78 | rss_rate=20
79 | #tags_rss_rate=?
80 | #category_rss_rate=?
81 | #posts_rss_rate=?
82 | #comments_rss_rate=?
83 |
84 | #########################################################################################################
85 | #########################################################################################################
86 | #
87 | # From this part and below - only internal configurations section - for Performance Administrator only!!
88 | #
89 | #########################################################################################################
90 | #########################################################################################################
91 |
92 |
93 | #########################################################################################################
94 | # JMeter Configuration Options #
95 | #########################################################################################################
96 |
97 | # Don't check cookies validity for WP
98 | CookieManager.check.cookies=false
99 |
100 | # Overrides the defaults - we want to log the number of active threads.
101 | jmeter.save.saveservice.thread_counts=true
102 |
103 | mode=Hold
104 |
105 | view.results.tree.max_size=0
106 | hc.parameters.file=hc.parameters
--------------------------------------------------------------------------------
/stresstest-stag.properties:
--------------------------------------------------------------------------------
1 | #########################################################################################################
2 | # Basic Configuration Details #
3 | #########################################################################################################
4 | webserver=wordpress.org
5 | service_port=443
6 | service_protocol=https
7 |
8 | # Proxy configuration
9 | #proxy_server=proxy
10 | #proxy_port=8080
11 |
12 | # HTTP timeouts
13 | http_connect_timeout=2000
14 | http_response_timeout=2000
15 |
16 | #########################################################################################################
17 | # Test Users Configuration Details #
18 | #########################################################################################################
19 | # Local files which contain blog posts, users, search queries to be used by the load test
20 | blogs_filename=dataset-stag/blogs.csv
21 | blog_posts_filename=dataset-stag/blog_posts.csv
22 | search_queries_filename=dataset-stag/search.csv
23 | users_filename=dataset-stag/users.csv
24 | administrators_filename=dataset-stag/administrators.csv
25 | contributors_filename=dataset-stag/contributors.csv
26 | tags_filename=dataset-stag/tags.csv
27 | static_posts_title_filename=dataset-stag/static_posts_title.csv
28 | static_posts_content_filename=dataset-stag/static_posts_content.csv
29 |
30 | readonly_test=false
31 |
32 | # Constant Delay for timer between transactions (in ms)
33 | think_time_constant=1000
34 | # Maximum Random Delay for timer between transactions (in ms)
35 | think_time_random=4000
36 |
37 | # use the drop-in impersonation plugin to login
38 | use_impersonation=true
39 |
40 | # Ramp-up/down period tells JMeter how long to take "ramp-up" to the full number of threads chosen and
41 | # how long to "ramp-down" the threads when finishing the test(in seconds).
42 | users_ramp_up_time=60
43 | users_ramp_down_time=60
44 |
45 | # Hold group running for (in seconds)
46 | users_hold_load_for=7200
47 |
48 | #Ratio between anonymous users and authenticated users.
49 | #It will be used for any read/only action that both can execute.
50 | anonymous_ratio=0.90
51 | authenticated_ratio=0.10
52 |
53 | # Sum of all actions below is ? iterations per minute in total
54 | #total_rate=?
55 | # We need about ? of sessions (based on production app nodes having about ? each)
56 | # so with session timeout of one hour (60 mintues) we should have 100k/60 new sessions per minute = 1666
57 | # Required Sessions / Session timeout (in minutes) / (total_rate ) = percent of iterations needed to drop session cookie (both anonymous and authenticated)
58 | #anonymous_session_drop_percent=59
59 | # But we have different behavior between authenticated and anonymous users. Anonymous are more likely to lose their session after short activity
60 | # While authenticated users remain longer in the system. Assuming we need ~35 logins per minute.
61 | #login_rate=35
62 | # So calculation is login_rate / (total_rate*authenticated_ratio)
63 | # 35 / ( 2816 * 0.10 ) = 12%
64 | authenticated_relogin_percent=12
65 | # So the real anonymous session drop need to consider the authenticated logins which create new sessions:
66 | # (Required Sessions / Session timeout (in minutes) - login_rate) / (total_rate * anonymous_ratio) = percent of iterations needed to drop session cookie (both anonymous and authenticated)
67 | anonymous_session_drop_percent=64
68 |
69 | #rate of different actions per minute
70 | homepage_rate=100
71 | viewing_blogpost_rate=500
72 | authenticated_post_comments_rate=10
73 | authenticated_create_blogpost_rate=1
74 | #view_page_rate=?
75 | searching_content_rate=100
76 | like_blog_post_rate=20
77 | like_comment_rate=20
78 | rss_rate=200
79 | #tags_rss_rate=?
80 | #category_rss_rate=?
81 | #posts_rss_rate=?
82 | #comments_rss_rate=?
83 |
84 | #########################################################################################################
85 | #########################################################################################################
86 | #
87 | # From this part and below - only internal configurations section - for Performance Administrator only!!
88 | #
89 | #########################################################################################################
90 | #########################################################################################################
91 |
92 |
93 | #########################################################################################################
94 | # JMeter Configuration Options #
95 | #########################################################################################################
96 |
97 | # Don't check cookies validity for WP
98 | CookieManager.check.cookies=false
99 |
100 | # Overrides the defaults - we want to log the number of active threads.
101 | jmeter.save.saveservice.thread_counts=true
102 |
103 | mode=Hold
104 |
105 | view.results.tree.max_size=0
106 | hc.parameters.file=hc.parameters
--------------------------------------------------------------------------------
/modules/plugins/wordpress-popular-posts/AJAX Blog Post Views Count.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Used params: views_count_token, blog_post_id
16 |
17 |
18 |
19 | "${views_count_token}" != "NOT_FOUND" && ${blog_post_id} > 0
20 | false
21 |
22 |
23 |
24 |
25 |
26 |
27 | false
28 | update_views_ajax
29 | =
30 | true
31 | action
32 |
33 |
34 | false
35 | ${views_count_token}
36 | =
37 | true
38 | token
39 |
40 |
41 | false
42 | ${blog_post_id}
43 | =
44 | true
45 | id
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | /wp-admin/admin-ajax.php
56 | POST
57 | true
58 | false
59 | true
60 | false
61 | false
62 |
63 |
64 |
65 |
66 |
67 | OK.
68 |
69 | Assertion.response_data
70 | false
71 | 16
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/modules/plugins/shariff-sharing/AJAX Get Sharing Counts.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Gets share count for g(google), f(facebook), t(twitter), l(linkedin)
16 |
17 |
18 |
19 | "${shariff_data_temp}" != "NOT_FOUND" && "${shariff_data_ttl}" != "NOT_FOUND" && "${shariff_data_service}" != "NOT_FOUND"
20 | false
21 |
22 |
23 |
24 |
25 |
26 |
27 | true
28 | ${last_viewed_url}
29 | =
30 | true
31 | url
32 |
33 |
34 | true
35 | ${shariff_data_temp}
36 | =
37 | true
38 | tmp
39 |
40 |
41 | false
42 | ${shariff_data_ttl}
43 | =
44 | true
45 | ttl
46 |
47 |
48 | false
49 | ${shariff_data_service}
50 | =
51 | true
52 | service
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | /wp-content/plugins/shariff-sharing/backend/index.php
63 | GET
64 | true
65 | false
66 | true
67 | false
68 | false
69 |
70 | gftl - g(google), f(facebook), t(twitter), l(linkedin)
71 |
72 |
73 |
74 |
75 | Assertion.response_data
76 | false
77 | 12
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/modules/core/View Blog.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | /${blogname}
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 | false
38 | comment_post_ID
39 | input type=["']hidden["'] name=["']comment_post_ID["'] value=["'](\d+)["'] id=["']comment_post_ID["']
40 | $1$
41 | 0
42 | 0
43 |
44 |
45 |
46 | false
47 | comment_post_ID
48 | input type=["']hidden["'] name=["']comment_post_ID["'] value=["'](\d+)["'] id=["']comment_post_ID["']
49 | $1$
50 | 0
51 | 0
52 |
53 |
54 |
55 | false
56 | current_blog
57 | ${service_port}(/[^/]*)/wp-comments-post.php["'] method=["']post["'] id=["']commentform["'] class=["']comment-form["']
58 | $1$
59 |
60 | 1
61 |
62 |
63 |
64 | URL
65 | last_viewed_url
66 | (.*)
67 | $1$
68 |
69 | 1
70 |
71 |
72 |
73 |
74 | current_blog
75 |
76 |
77 |
78 |
79 |
80 |
81 | false
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/modules/core/Post Comment.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Gets comment_post_ID, comment_parent and current_blog(extracted out of View Blog Post)
16 |
17 |
18 |
19 |
20 |
21 |
22 | true
23 | That's a great post! But I need to head home because it is ${__time(yyyy-MM-dd'T'HH:mm:ss.SSSZ)} now...
24 | =
25 | true
26 | comment
27 |
28 |
29 | true
30 | Post Comment
31 | =
32 | true
33 | submit
34 |
35 |
36 | false
37 | ${comment_post_ID}
38 | =
39 | true
40 | comment_post_ID
41 |
42 |
43 | false
44 | ${comment_parent}
45 | =
46 | true
47 | comment_parent
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | ${current_blog}/wp-comments-post.php
58 | POST
59 | true
60 | false
61 | true
62 | false
63 | false
64 |
65 | Disabled due to posting comment with ajax (another request will be sent)
66 |
67 |
68 |
69 |
70 |
71 | Content-Type
72 | application/x-www-form-urlencoded
73 |
74 |
75 |
76 |
77 |
78 |
79 | ${last_viewed_url}
80 |
81 | Assertion.sample_label
82 | false
83 | 16
84 |
85 |
86 |
87 |
88 | modules/plugins/wordpress-popular-posts/AJAX Blog Post Views Count.jmx
89 | Generating AJAX call which is part of the View Blog Post as posting comment trigger a full page reload
90 |
91 |
92 |
93 | modules/plugins/shariff-sharing/AJAX Get Sharing Counts.jmx
94 | Generating AJAX call which is part of the View Blog Post as posting comment trigger a full page reload
95 |
96 |
97 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/modules/plugins/likes-posts-comments/Like Blog Post.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Like existing blog post . Extratcs blog_post_id and like_post_action variables from View_Blog_Post.jmx script.
16 |
17 |
18 |
19 | ${blog_post_id} > 0
20 | false
21 |
22 |
23 |
24 | false
25 | true
26 | false
27 |
28 |
29 |
30 |
31 |
32 | Content-Type
33 | application/x-www-form-urlencoded
34 |
35 |
36 |
37 |
38 |
39 | "${like_post_action}" == "dolike"
40 | false
41 | check if doLike is required
42 |
43 |
44 |
45 |
46 |
47 |
48 | false
49 | like_a_post
50 | =
51 | true
52 | action
53 |
54 |
55 | false
56 | ${blog_post_id}
57 | =
58 | true
59 | post_id
60 |
61 |
62 | false
63 | doLike
64 | =
65 | true
66 | actionLike
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | /wp-admin/admin-ajax.php
77 | POST
78 | true
79 | false
80 | true
81 | false
82 | false
83 |
84 |
85 |
86 |
87 |
88 | "success":false
89 |
90 | Assertion.response_data
91 | false
92 | 20
93 |
94 |
95 |
96 |
97 |
98 | "${like_post_action}" == "doUnlike"
99 | false
100 | check if doUnLike is required
101 |
102 |
103 |
104 |
105 |
106 |
107 | false
108 | like_a_post
109 | =
110 | true
111 | action
112 |
113 |
114 | false
115 | ${blog_post_id}
116 | =
117 | true
118 | post_id
119 |
120 |
121 | false
122 | doUnLike
123 | =
124 | true
125 | actionLike
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 | /wp-admin/admin-ajax.php
136 | POST
137 | true
138 | false
139 | true
140 | false
141 | false
142 |
143 |
144 |
145 |
146 |
147 | "success":false
148 |
149 | Assertion.response_data
150 | false
151 | 20
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
--------------------------------------------------------------------------------
/modules/plugins/likes-posts-comments/Like Comment.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Like existing blog post comment . Extracts random_comment var from View_Blog_Post.jmx. random_comment conist of two regex groups. g1 - for comment id, g2 - for either doLike or doUnLike action.
16 |
17 |
18 |
19 | ${random_comment_g1} > 0
20 | false
21 | Checks if comment is valid
22 |
23 |
24 |
25 | false
26 | true
27 | false
28 |
29 |
30 |
31 |
32 |
33 | Content-Type
34 | application/x-www-form-urlencoded
35 |
36 |
37 |
38 |
39 |
40 | "${random_comment_g2}" == "dolike"
41 | false
42 | check if doLike is required
43 |
44 |
45 |
46 |
47 |
48 |
49 | false
50 | like_a_comment
51 | =
52 | true
53 | action
54 |
55 |
56 | false
57 | ${random_comment_g1}
58 | =
59 | true
60 | comment_id
61 |
62 |
63 | false
64 | doLike
65 | =
66 | true
67 | actionLike
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | /wp-admin/admin-ajax.php
78 | POST
79 | true
80 | false
81 | true
82 | false
83 | false
84 |
85 |
86 |
87 |
88 |
89 | "success":false
90 |
91 | Assertion.response_data
92 | false
93 | 20
94 |
95 |
96 |
97 |
98 |
99 | "${random_comment_g2}" == "doUnlike"
100 | false
101 | check if doUnLike is required
102 |
103 |
104 |
105 |
106 |
107 |
108 | false
109 | like_a_comment
110 | =
111 | true
112 | action
113 |
114 |
115 | false
116 | ${random_comment_g1}
117 | =
118 | true
119 | comment_id
120 |
121 |
122 | false
123 | doUnLike
124 | =
125 | true
126 | actionLike
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | /wp-admin/admin-ajax.php
137 | POST
138 | true
139 | false
140 | true
141 | false
142 | false
143 |
144 |
145 |
146 |
147 |
148 | "success":false
149 |
150 | Assertion.response_data
151 | false
152 | 20
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
--------------------------------------------------------------------------------
/modules/core/View Blog Post.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | ${blog_post_relative_path}
27 | GET
28 | true
29 | false
30 | true
31 | false
32 | false
33 |
34 |
35 |
36 |
37 | false
38 | comment_post_ID
39 | input type=["']hidden["'] name=["']comment_post_ID["'] value=["'](\d+)["'] id=["']comment_post_ID["']
40 | $1$
41 | 0
42 | 0
43 |
44 |
45 |
46 | false
47 | current_blog
48 | ${service_port}(/[^/]*)/wp-comments-post.php["'] method=["']post["'] id=["']commentform["'] class=["']comment-form["']
49 | $1$
50 |
51 | 1
52 |
53 |
54 |
55 | URL
56 | last_viewed_url
57 | (.*)
58 | $1$
59 |
60 | 1
61 |
62 |
63 |
64 | false
65 | blog_post_id
66 | postid-(\d+)
67 | $1$
68 | 0
69 | 1
70 |
71 |
72 |
73 | false
74 | views_count_token
75 | action=update_views_ajax&token=(\w+)
76 | $1$
77 | NOT_FOUND
78 | 1
79 |
80 |
81 |
82 | false
83 | ajaxed_comments_post_nonce
84 | div id=["']ajaxed-comments-box["'] rel=["'](\w+)["']
85 | $1$
86 | NOT_FOUND
87 | 1
88 |
89 |
90 |
91 | false
92 | comment_parent
93 | input type=["']hidden["'] name=["']comment_parent["'] id=["']comment_parent["'] value=["'](\d+)["']
94 | $1$
95 | 0
96 | 0
97 |
98 |
99 |
100 | false
101 | random_comment
102 | "commentID_(\d+)" class="likes-comment-link[\s](\w+)"
103 | $1$
104 | 0
105 | 0
106 |
107 |
108 |
109 | false
110 | like_post_action
111 | class="likes-post-link[\s](\w+)"
112 | $1$
113 | 0
114 | 1
115 |
116 |
117 |
118 | false
119 | shariff_data_temp
120 | data-temp=["'](\S*)["'] data-ttl=["'](\d*)["'] data-service=["'](\S*)["']
121 | $1$
122 | NOT_FOUND
123 | 1
124 |
125 |
126 |
127 | false
128 | shariff_data_ttl
129 | data-temp=["'](\S*)["'] data-ttl=["'](\d*)["'] data-service=["'](\S*)["']
130 | $2$
131 | NOT_FOUND
132 | 1
133 |
134 |
135 |
136 | false
137 | shariff_data_service
138 | data-temp=["'](\S*)["'] data-ttl=["'](\d*)["'] data-service=["'](\S*)["']
139 | $3$
140 | NOT_FOUND
141 | 1
142 |
143 |
144 |
145 |
146 | current_blog
147 |
148 |
149 |
150 |
151 |
152 |
153 | false
154 |
155 |
156 |
157 |
158 | modules/plugins/wordpress-popular-posts/AJAX Blog Post Views Count.jmx
159 |
160 |
161 |
162 | modules/plugins/shariff-sharing/AJAX Get Sharing Counts.jmx
163 |
164 |
165 |
166 |
167 |
168 |
169 |
--------------------------------------------------------------------------------
/modules/core/Login.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | "${use_saml_login}" == "false"
18 | false
19 |
20 |
21 |
22 |
23 |
24 |
25 | false
26 | ${user_login}
27 | =
28 | true
29 | log
30 |
31 |
32 | false
33 | ${user_pass}
34 | =
35 | true
36 | pwd
37 |
38 |
39 | false
40 | false
41 | =
42 | true
43 | use_sso
44 |
45 |
46 | false
47 | Log In
48 | =
49 | true
50 | wp-submit
51 |
52 |
53 | false
54 | 1
55 | =
56 | true
57 | testcookie
58 |
59 |
60 | false
61 | ${service_protocol}://${service_host}:${service_port}/
62 | =
63 | true
64 | redirect_to
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | /wp-login.php
75 | POST
76 | true
77 | false
78 | true
79 | false
80 | false
81 |
82 |
83 |
84 |
85 |
86 | Log In</title>
87 |
88 | Assertion.response_data
89 | false
90 | 20
91 |
92 |
93 |
94 |
95 |
96 | "${use_impersonation}" == "true" && "${JMeterThread.last_sample_ok}" == "true"
97 | false
98 | impersonation is enabled only for logged-in users with admin role
99 |
100 |
101 |
102 |
103 |
104 |
105 | false
106 | ${user_login}
107 | =
108 | true
109 | log
110 |
111 |
112 | false
113 | PUT THE SECRET IMPERSONATION KEY HERE
114 | =
115 | true
116 | pwd
117 |
118 |
119 | false
120 | false
121 | =
122 | true
123 | use_sso
124 |
125 |
126 | false
127 | Log In
128 | =
129 | true
130 | wp-submit
131 |
132 |
133 | false
134 | 1
135 | =
136 | true
137 | testcookie
138 |
139 |
140 | false
141 | ${service_protocol}://${service_host}:${service_port}/
142 | =
143 | true
144 | redirect_to
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 | /wp-login.php
155 | POST
156 | true
157 | false
158 | true
159 | false
160 | false
161 |
162 |
163 |
164 |
165 |
166 | Log In</title>
167 |
168 | Assertion.response_data
169 | false
170 | 20
171 |
172 |
173 |
174 |
175 |
176 | "${JMeterThread.last_sample_ok}" == "false" || "${username}" == "NOT FOUND"
177 | false
178 |
179 |
180 |
181 | 3
182 | 0
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
--------------------------------------------------------------------------------
/single-user.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | false
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | service_host
18 | ${__P(webserver,)}
19 | =
20 |
21 |
22 | service_port
23 | ${__P(service_port,)}
24 | =
25 |
26 |
27 | service_protocol
28 | ${__P(service_protocol,)}
29 | =
30 |
31 |
32 | proxy_server
33 | ${__P(proxy_server,)}
34 | =
35 |
36 |
37 | proxy_port
38 | ${__P(proxy_port,)}
39 | =
40 |
41 |
42 | users_filename
43 | ${__P(users_filename,)}
44 | =
45 |
46 |
47 | administrators_filename
48 | ${__P(administrators_filename,)}
49 | =
50 |
51 |
52 | contributors_filename
53 | ${__P(contributors_filename,)}
54 | =
55 |
56 |
57 | blogs_filename
58 | ${__P(blogs_filename,)}
59 | =
60 |
61 |
62 | blog_posts_filename
63 | ${__P(blog_posts_filename,)}
64 | =
65 |
66 |
67 | search_filters_filename
68 | ${__P(search_filters_filename,)}
69 | =
70 |
71 |
72 | search_queries_filename
73 | ${__P(search_queries_filename,)}
74 | =
75 |
76 |
77 | tags_filename
78 | ${__P(tags_filename,)}
79 | =
80 |
81 |
82 | metadata_tags_filename
83 | ${__P(metadata_tags_filename,)}
84 | =
85 |
86 |
87 | static_posts_title_filename
88 | ${__P(static_posts_title_filename,)}
89 | =
90 |
91 |
92 | static_posts_content_filename
93 | ${__P(static_posts_content_filename,)}
94 | =
95 |
96 |
97 | iterations
98 | ${__P(iterations,)}
99 | =
100 |
101 |
102 | anonymous_test
103 | ${__P(anonymous_test,true)}
104 | =
105 |
106 |
107 | user_state
108 | Anonymous
109 | =
110 |
111 |
112 | token
113 |
114 | =
115 |
116 |
117 | last_viewed_url
118 | ${__P(service_protocol,http)}://${__P(webserver,)}:${__P(service_port,)}/
119 | =
120 |
121 |
122 | think_time_random
123 | ${__P(think_time_random,0)}
124 | =
125 |
126 |
127 | think_time_constant
128 | ${__P(think_time_constant,0)}
129 | =
130 |
131 |
132 | use_impersonation
133 | ${__P(use_impersonation,false)}
134 | =
135 |
136 |
137 | http_connect_timeout
138 | ${__P(http_connect_timeout,0)}
139 | =
140 |
141 |
142 | http_response_timeout
143 | ${__P(http_response_timeout,0)}
144 | =
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | ${service_host}
154 | ${service_port}
155 | ${proxy_server}
156 | ${proxy_port}
157 | ${http_connect_timeout}
158 | ${http_response_timeout}
159 | ${service_protocol}
160 |
161 |
162 | HttpClient4
163 | 4
164 |
165 |
166 |
167 |
168 | false
169 | org.apache.jmeter.protocol.http.control.HC4CookieHandler
170 |
171 |
172 |
173 |
174 |
175 | Content-Type
176 | application/x-www-form-urlencoded
177 |
178 |
179 | Accept
180 | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
181 |
182 |
183 | Accept-Encoding
184 | gzip,deflate,sdch
185 |
186 |
187 | Cache-Control
188 | max-age=0
189 |
190 |
191 | Connection
192 | keep-alive
193 |
194 |
195 | Accept-Language
196 | en-US,en;q=0.8,ru;q=0.6
197 |
198 |
199 |
200 |
201 |
202 | true
203 |
204 | saveConfig
205 |
206 |
207 | true
208 | true
209 | true
210 |
211 | true
212 | true
213 | true
214 | true
215 | false
216 | true
217 | true
218 | true
219 | true
220 | true
221 | false
222 | true
223 | true
224 | false
225 | true
226 | 0
227 | true
228 | true
229 | true
230 |
231 |
232 | results/errors-detailed.jtl
233 | This should be enabled also during a load test
234 |
235 |
236 |
237 | false
238 |
239 | saveConfig
240 |
241 |
242 | true
243 | true
244 | true
245 |
246 | true
247 | true
248 | true
249 | true
250 | false
251 | true
252 | true
253 | false
254 | false
255 | false
256 | false
257 | false
258 | false
259 | false
260 | false
261 | 0
262 | true
263 | true
264 |
265 |
266 |
267 | This should be disabled before starting a load test
268 |
269 |
270 |
271 | false
272 |
273 | saveConfig
274 |
275 |
276 | true
277 | true
278 | true
279 |
280 | true
281 | true
282 | true
283 | true
284 | false
285 | true
286 | true
287 | false
288 | false
289 | false
290 | false
291 | false
292 | false
293 | false
294 | false
295 | 0
296 | true
297 | true
298 |
299 |
300 |
301 | This should be disabled before starting a load test
302 |
303 |
304 |
305 | continue
306 |
307 | false
308 | ${iterations}
309 |
310 | 1
311 | 0
312 | 1396446035000
313 | 1396446035000
314 | false
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 | user_login
324 | first_name
325 |
326 |
327 |
328 | ${contributor_user_login}
329 | ${contributor_first_name}
330 |
331 |
332 | true
333 |
334 |
335 |
336 |
337 | user_login
338 | first_name
339 |
340 |
341 |
342 | ${admin_user_login}
343 | ${admin_first_name}
344 |
345 |
346 | true
347 |
348 |
349 |
350 | modules/core/Login.jmx
351 |
352 |
353 |
354 |
355 | modules/core/Homepage.jmx
356 |
357 |
358 |
359 | modules/core/View Blog Post.jmx
360 |
361 |
362 |
363 | modules/plugins/likes-posts-comments/Like Blog Post.jmx
364 |
365 |
366 |
367 | modules/plugins/likes-posts-comments/Like Comment.jmx
368 |
369 |
370 |
371 | modules/core/Post Comment.jmx
372 |
373 |
374 |
375 | modules/core/Create Blog Post.jmx
376 |
377 |
378 |
379 | modules/core/Search.jmx
380 |
381 |
382 |
383 |
384 | continue
385 |
386 | false
387 | ${iterations}
388 |
389 | 1
390 | 0
391 | 1396446035000
392 | 1396446035000
393 | false
394 |
395 |
396 |
397 |
398 |
399 | modules/core/Homepage.jmx
400 |
401 |
402 |
403 | modules/core/View Blog Post.jmx
404 |
405 |
406 |
407 | modules/core/RSS Blog Entries.jmx
408 |
409 |
410 |
411 | modules/core/RSS Blog Comments.jmx
412 |
413 |
414 |
415 | modules/core/Search.jmx
416 |
417 |
418 |
419 |
420 | ${blog_posts_filename}
421 |
422 | blogpost_title,blog_post_relative_path
423 | \t
424 | false
425 | true
426 | false
427 | shareMode.all
428 |
429 |
430 |
431 | ${blogs_filename}
432 |
433 | blog_relative_path
434 | \t
435 | false
436 | true
437 | false
438 | shareMode.all
439 | multisite is not supported yet
440 |
441 |
442 |
443 | ${users_filename}
444 |
445 | user_id,user_login,user_email,display_name,first_name,last_name
446 | \t
447 | false
448 | true
449 | false
450 | shareMode.all
451 |
452 |
453 |
454 | ${administrators_filename}
455 |
456 | admin_user_id,admin_user_login,admin_user_email,admin_display_name,admin_first_name,admin_last_name
457 | \t
458 | false
459 | true
460 | false
461 | shareMode.all
462 |
463 |
464 |
465 | ${contributors_filename}
466 |
467 | contributor_user_id,contributor_user_login,contributor_user_email,contributor_display_name,contributor_first_name,contributor_last_name
468 | \t
469 | false
470 | true
471 | false
472 | shareMode.all
473 |
474 |
475 |
476 | ${static_posts_title_filename}
477 |
478 | post_title
479 | \t
480 | false
481 | true
482 | false
483 | shareMode.all
484 | used for creating new blog posts
485 |
486 |
487 |
488 | ${static_posts_content_filename}
489 |
490 | post_content
491 | \t
492 | false
493 | true
494 | false
495 | shareMode.all
496 | used for creating new blog posts
497 |
498 |
499 |
500 | ,
501 |
502 | ${search_queries_filename}
503 | false
504 | true
505 | shareMode.all
506 | false
507 | search_query
508 |
509 |
510 |
511 |
512 |
513 |
--------------------------------------------------------------------------------
/export.jmx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 | true
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | service_host
18 | ${__P(webserver,)}
19 | =
20 |
21 |
22 | service_port
23 | ${__P(service_port,)}
24 | =
25 |
26 |
27 | service_protocol
28 | ${__P(service_protocol,)}
29 | =
30 |
31 |
32 | proxy_server
33 | ${__P(proxy_server,)}
34 | =
35 |
36 |
37 | proxy_port
38 | ${__P(proxy_port,)}
39 | =
40 |
41 |
42 | users_filename
43 | ${__P(users_filename,)}
44 | =
45 |
46 |
47 | administrators_filename
48 | ${__P(administrators_filename,)}
49 | =
50 |
51 |
52 | contributors_filename
53 | ${__P(contributors_filename,)}
54 | =
55 |
56 |
57 | blogs_filename
58 | ${__P(blogs_filename,)}
59 | =
60 |
61 |
62 | blog_posts_filename
63 | ${__P(blog_posts_filename,)}
64 | =
65 |
66 |
67 | search_filters_filename
68 | ${__P(search_filters_filename,)}
69 | =
70 |
71 |
72 | search_queries_filename
73 | ${__P(search_queries_filename,)}
74 | =
75 |
76 |
77 | tags_filename
78 | ${__P(tags_filename,)}
79 | =
80 |
81 |
82 | metadata_tags_filename
83 | ${__P(metadata_tags_filename,)}
84 | =
85 |
86 |
87 | admin_user_name
88 | ${__P(admin_user_name,admin)}
89 | =
90 |
91 |
92 | admin_user_pass
93 | ${__P(admin_user_pass,admin)}
94 | =
95 |
96 |
97 | use_impersonation
98 | false
99 | =
100 |
101 |
102 |
103 |
104 |
105 | false
106 |
107 | saveConfig
108 |
109 |
110 | true
111 | true
112 | true
113 |
114 | true
115 | true
116 | true
117 | true
118 | false
119 | true
120 | true
121 | false
122 | false
123 | true
124 | false
125 | false
126 | false
127 | false
128 | false
129 | 0
130 | true
131 | true
132 |
133 |
134 |
135 |
136 |
137 |
138 | false
139 |
140 | saveConfig
141 |
142 |
143 | true
144 | true
145 | true
146 |
147 | true
148 | true
149 | true
150 | true
151 | false
152 | true
153 | true
154 | false
155 | false
156 | true
157 | false
158 | false
159 | false
160 | false
161 | false
162 | 0
163 | true
164 | true
165 |
166 |
167 |
168 |
169 |
170 |
171 | continue
172 |
173 | false
174 | 5
175 |
176 | 1
177 | 1
178 | 1319548849000
179 | 1319548849000
180 | false
181 |
182 |
183 | Export all users - giving it up to 5 tries
184 |
185 |
186 |
187 |
188 |
189 | OUT.println("Exporting users...");
190 | beanshell
191 |
192 |
193 |
194 | modules/core/Login.jmx
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 | /data-export-csv.php?query=users
208 | GET
209 | true
210 | false
211 | true
212 | false
213 | false
214 |
215 |
216 |
217 |
218 | ${users_filename}
219 | false
220 | true
221 | true
222 | true
223 |
224 |
225 |
226 |
227 | "${JMeterThread.last_sample_ok}" == "false"
228 | false
229 |
230 |
231 |
232 |
233 |
234 | OUT.println("Failed exporting users.");
235 | beanshell
236 |
237 |
238 |
239 | 3
240 | 0
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 | /data-export-csv.php?query=administrators
256 | GET
257 | true
258 | false
259 | true
260 | false
261 | false
262 |
263 |
264 |
265 |
266 | ${administrators_filename}
267 | false
268 | true
269 | true
270 | true
271 |
272 |
273 |
274 |
275 | "${JMeterThread.last_sample_ok}" == "false"
276 | false
277 |
278 |
279 |
280 |
281 |
282 | OUT.println("Failed exporting administrators.");
283 | beanshell
284 |
285 |
286 |
287 | 3
288 | 0
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 | /data-export-csv.php?query=contributors
304 | GET
305 | true
306 | false
307 | true
308 | false
309 | false
310 |
311 |
312 |
313 |
314 | ${contributors_filename}
315 | false
316 | true
317 | true
318 | true
319 |
320 |
321 |
322 |
323 | "${JMeterThread.last_sample_ok}" == "false"
324 | false
325 |
326 |
327 |
328 |
329 |
330 | OUT.println("Failed exporting contributors.");
331 | beanshell
332 |
333 |
334 |
335 | 3
336 | 0
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 | OUT.println("Done exporting users!");
345 | beanshell
346 |
347 |
348 |
349 | 0
350 | 0
351 |
352 | As it means users were exported successfuly
353 |
354 |
355 |
356 |
357 | continue
358 |
359 | false
360 | 5
361 |
362 | 1
363 | 1
364 | 1319548849000
365 | 1319548849000
366 | false
367 |
368 |
369 | Export all blogposts - giving it up to 5 tries
370 |
371 |
372 |
373 |
374 |
375 | OUT.println("Exporting blogposts...");
376 | beanshell
377 |
378 |
379 |
380 | modules/core/Login.jmx
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 | /data-export-csv.php?query=posts
394 | GET
395 | true
396 | false
397 | true
398 | false
399 | false
400 |
401 |
402 |
403 |
404 | ${blog_posts_filename}
405 | false
406 | true
407 | true
408 | true
409 |
410 |
411 |
412 |
413 | "${JMeterThread.last_sample_ok}" == "false"
414 | false
415 |
416 |
417 |
418 |
419 |
420 | OUT.println("Failed exporting blogposts.");
421 | beanshell
422 |
423 |
424 |
425 | 3
426 | 0
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 | OUT.println("Done exporting blogposts!");
435 | beanshell
436 |
437 |
438 |
439 | 0
440 | 0
441 |
442 | As it means posts were exported successfuly
443 |
444 |
445 |
446 |
447 | continue
448 |
449 | false
450 | 5
451 |
452 | 1
453 | 1
454 | 1400163952000
455 | 1400163952000
456 | false
457 |
458 |
459 |
460 |
461 |
462 | beanshell
463 |
464 |
465 | OUT.println("Exporting tags...");
466 |
467 |
468 |
469 | modules/core/Login.jmx
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 | /data-export-csv.php?query=tags
483 | GET
484 | true
485 | false
486 | true
487 | false
488 | false
489 |
490 |
491 |
492 |
493 | ${tags_filename}
494 | false
495 | true
496 | true
497 | true
498 |
499 |
500 |
501 |
502 | "${JMeterThread.last_sample_ok}" == "false"
503 | false
504 |
505 |
506 |
507 |
508 |
509 | OUT.println("Failed exporting tags.");
510 | beanshell
511 |
512 |
513 |
514 | 3
515 | 0
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 | OUT.println("Done exporting tags!");
524 | beanshell
525 |
526 |
527 |
528 | 0
529 | 0
530 |
531 | As it means tags were exported successfuly
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 | ${service_host}
540 | ${service_port}
541 | ${proxy_server}
542 | ${proxy_port}
543 | 300000
544 | 300000
545 | ${service_protocol}
546 |
547 |
548 | HttpClient4
549 | 4
550 |
551 |
552 |
553 |
554 | false
555 | org.apache.jmeter.protocol.http.control.HC4CookieHandler
556 |
557 |
558 |
559 |
560 |
561 | Content-Type
562 | application/x-www-form-urlencoded
563 |
564 |
565 | Accept
566 | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
567 |
568 |
569 | Accept-Encoding
570 | gzip,deflate,sdch
571 |
572 |
573 | Cache-Control
574 | max-age=0
575 |
576 |
577 | Connection
578 | keep-alive
579 |
580 |
581 | Accept-Language
582 | en-US,en;q=0.8,ru;q=0.6
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
--------------------------------------------------------------------------------