You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2017/10/31 20:41:28 UTC

[trafficserver] branch master updated: added tests for different thread configurations, thread information is verified using gdb

This is an automated email from the ASF dual-hosted git repository.

amc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 48c3e7b  added tests for different thread configurations, thread information is verified using gdb
48c3e7b is described below

commit 48c3e7b14661daf0e252aad27e09d54ed20bf4c7
Author: Fei Deng <fe...@oath.com>
AuthorDate: Tue Aug 29 10:32:06 2017 -0500

    added tests for different thread configurations, thread information is verified using gdb
    
    adding support for mac
    
    use ps instead of gdb
    
    use debug tag to print out thread information
    
    clang-format check
---
 iocore/eventsystem/UnixEventProcessor.cc           |   1 +
 iocore/net/UnixNetProcessor.cc                     |   5 +-
 tests/gold_tests/thread_config/gold/http_200.gold  |   9 ++
 .../thread_config/gold/thread_100_0.gold           | 101 +++++++++++++++++++
 .../thread_config/gold/thread_100_1.gold           | 102 +++++++++++++++++++
 .../thread_config/gold/thread_100_10.gold          | 111 +++++++++++++++++++++
 .../gold_tests/thread_config/gold/thread_1_0.gold  |   2 +
 .../gold_tests/thread_config/gold/thread_1_1.gold  |   3 +
 .../gold_tests/thread_config/gold/thread_1_10.gold |  12 +++
 .../gold_tests/thread_config/gold/thread_2_0.gold  |   3 +
 .../gold_tests/thread_config/gold/thread_2_1.gold  |   4 +
 .../gold_tests/thread_config/gold/thread_2_10.gold |  13 +++
 .../gold_tests/thread_config/gold/thread_32_0.gold |  33 ++++++
 .../gold_tests/thread_config/gold/thread_32_1.gold |  34 +++++++
 .../thread_config/gold/thread_32_10.gold           |  43 ++++++++
 .../gold_tests/thread_config/thread_100_0.test.py  |  61 +++++++++++
 .../gold_tests/thread_config/thread_100_1.test.py  |  62 ++++++++++++
 .../gold_tests/thread_config/thread_100_10.test.py |  61 +++++++++++
 tests/gold_tests/thread_config/thread_1_0.test.py  |  61 +++++++++++
 tests/gold_tests/thread_config/thread_1_1.test.py  |  61 +++++++++++
 tests/gold_tests/thread_config/thread_1_10.test.py |  61 +++++++++++
 tests/gold_tests/thread_config/thread_2_0.test.py  |  61 +++++++++++
 tests/gold_tests/thread_config/thread_2_1.test.py  |  61 +++++++++++
 tests/gold_tests/thread_config/thread_2_10.test.py |  61 +++++++++++
 tests/gold_tests/thread_config/thread_32_0.test.py |  61 +++++++++++
 tests/gold_tests/thread_config/thread_32_1.test.py |  61 +++++++++++
 .../gold_tests/thread_config/thread_32_10.test.py  |  61 +++++++++++
 27 files changed, 1207 insertions(+), 2 deletions(-)

diff --git a/iocore/eventsystem/UnixEventProcessor.cc b/iocore/eventsystem/UnixEventProcessor.cc
index 9048c0f..f628867 100644
--- a/iocore/eventsystem/UnixEventProcessor.cc
+++ b/iocore/eventsystem/UnixEventProcessor.cc
@@ -377,6 +377,7 @@ EventProcessor::spawn_event_threads(EventType ev_type, int n_threads, size_t sta
   // the group. Some thread set up depends on knowing the total number of threads but that can't be
   // safely updated until all the EThread instances are created and stored in the table.
   for (i = 0; i < n_threads; ++i) {
+    Debug("iocore_thread_start", "Created %s thread #%d", tg->_name.get(), i + 1);
     snprintf(thr_name, MAX_THREAD_NAME_LENGTH, "[%s %d]", tg->_name.get(), i);
     void *stack = Thread_Affinity_Initializer.alloc_stack(tg->_thread[i], stacksize);
     tg->_thread[i]->start(thr_name, stack, stacksize);
diff --git a/iocore/net/UnixNetProcessor.cc b/iocore/net/UnixNetProcessor.cc
index 42cac06..f4fd335 100644
--- a/iocore/net/UnixNetProcessor.cc
+++ b/iocore/net/UnixNetProcessor.cc
@@ -150,11 +150,12 @@ UnixNetProcessor::accept_internal(Continuation *cont, int fd, AcceptOptions cons
           NetAccept *a = na->clone();
           snprintf(thr_name, MAX_THREAD_NAME_LENGTH, "[ACCEPT %d:%d]", i - 1, ats_ip_port_host_order(&accept_ip));
           a->init_accept_loop(thr_name);
-          Debug("iocore_net_accept", "Created accept thread #%d for port %d", i, ats_ip_port_host_order(&accept_ip));
+          Debug("iocore_net_accept_start", "Created accept thread #%d for port %d", i, ats_ip_port_host_order(&accept_ip));
         }
 
         // Start the "template" accept thread last.
-        Debug("iocore_net_accept", "Created accept thread #%d for port %d", accept_threads, ats_ip_port_host_order(&accept_ip));
+        Debug("iocore_net_accept_start", "Created accept thread #%d for port %d", accept_threads,
+              ats_ip_port_host_order(&accept_ip));
         snprintf(thr_name, MAX_THREAD_NAME_LENGTH, "[ACCEPT %d:%d]", accept_threads - 1, ats_ip_port_host_order(&accept_ip));
         na->init_accept_loop(thr_name);
 #if !TS_USE_POSIX_CAP
diff --git a/tests/gold_tests/thread_config/gold/http_200.gold b/tests/gold_tests/thread_config/gold/http_200.gold
new file mode 100644
index 0000000..f3752f1
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/http_200.gold
@@ -0,0 +1,9 @@
+``
+< HTTP/1.1 200 OK
+< Date: ``
+< Age: ``
+< Transfer-Encoding: chunked
+< Proxy-Connection: keep-alive
+< Server: ATS/``
+< 
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_100_0.gold b/tests/gold_tests/thread_config/gold/thread_100_0.gold
new file mode 100644
index 0000000..9c9b1cd
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_100_0.gold
@@ -0,0 +1,101 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``Created ET_NET thread #33
+``Created ET_NET thread #34
+``Created ET_NET thread #35
+``Created ET_NET thread #36
+``Created ET_NET thread #37
+``Created ET_NET thread #38
+``Created ET_NET thread #39
+``Created ET_NET thread #40
+``Created ET_NET thread #41
+``Created ET_NET thread #42
+``Created ET_NET thread #43
+``Created ET_NET thread #44
+``Created ET_NET thread #45
+``Created ET_NET thread #46
+``Created ET_NET thread #47
+``Created ET_NET thread #48
+``Created ET_NET thread #49
+``Created ET_NET thread #50
+``Created ET_NET thread #51
+``Created ET_NET thread #52
+``Created ET_NET thread #53
+``Created ET_NET thread #54
+``Created ET_NET thread #55
+``Created ET_NET thread #56
+``Created ET_NET thread #57
+``Created ET_NET thread #58
+``Created ET_NET thread #59
+``Created ET_NET thread #60
+``Created ET_NET thread #61
+``Created ET_NET thread #62
+``Created ET_NET thread #63
+``Created ET_NET thread #64
+``Created ET_NET thread #65
+``Created ET_NET thread #66
+``Created ET_NET thread #67
+``Created ET_NET thread #68
+``Created ET_NET thread #69
+``Created ET_NET thread #70
+``Created ET_NET thread #71
+``Created ET_NET thread #72
+``Created ET_NET thread #73
+``Created ET_NET thread #74
+``Created ET_NET thread #75
+``Created ET_NET thread #76
+``Created ET_NET thread #77
+``Created ET_NET thread #78
+``Created ET_NET thread #79
+``Created ET_NET thread #80
+``Created ET_NET thread #81
+``Created ET_NET thread #82
+``Created ET_NET thread #83
+``Created ET_NET thread #84
+``Created ET_NET thread #85
+``Created ET_NET thread #86
+``Created ET_NET thread #87
+``Created ET_NET thread #88
+``Created ET_NET thread #89
+``Created ET_NET thread #90
+``Created ET_NET thread #91
+``Created ET_NET thread #92
+``Created ET_NET thread #93
+``Created ET_NET thread #94
+``Created ET_NET thread #95
+``Created ET_NET thread #96
+``Created ET_NET thread #97
+``Created ET_NET thread #98
+``Created ET_NET thread #99
+``Created ET_NET thread #100
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_100_1.gold b/tests/gold_tests/thread_config/gold/thread_100_1.gold
new file mode 100644
index 0000000..c968dbb
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_100_1.gold
@@ -0,0 +1,102 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``Created ET_NET thread #33
+``Created ET_NET thread #34
+``Created ET_NET thread #35
+``Created ET_NET thread #36
+``Created ET_NET thread #37
+``Created ET_NET thread #38
+``Created ET_NET thread #39
+``Created ET_NET thread #40
+``Created ET_NET thread #41
+``Created ET_NET thread #42
+``Created ET_NET thread #43
+``Created ET_NET thread #44
+``Created ET_NET thread #45
+``Created ET_NET thread #46
+``Created ET_NET thread #47
+``Created ET_NET thread #48
+``Created ET_NET thread #49
+``Created ET_NET thread #50
+``Created ET_NET thread #51
+``Created ET_NET thread #52
+``Created ET_NET thread #53
+``Created ET_NET thread #54
+``Created ET_NET thread #55
+``Created ET_NET thread #56
+``Created ET_NET thread #57
+``Created ET_NET thread #58
+``Created ET_NET thread #59
+``Created ET_NET thread #60
+``Created ET_NET thread #61
+``Created ET_NET thread #62
+``Created ET_NET thread #63
+``Created ET_NET thread #64
+``Created ET_NET thread #65
+``Created ET_NET thread #66
+``Created ET_NET thread #67
+``Created ET_NET thread #68
+``Created ET_NET thread #69
+``Created ET_NET thread #70
+``Created ET_NET thread #71
+``Created ET_NET thread #72
+``Created ET_NET thread #73
+``Created ET_NET thread #74
+``Created ET_NET thread #75
+``Created ET_NET thread #76
+``Created ET_NET thread #77
+``Created ET_NET thread #78
+``Created ET_NET thread #79
+``Created ET_NET thread #80
+``Created ET_NET thread #81
+``Created ET_NET thread #82
+``Created ET_NET thread #83
+``Created ET_NET thread #84
+``Created ET_NET thread #85
+``Created ET_NET thread #86
+``Created ET_NET thread #87
+``Created ET_NET thread #88
+``Created ET_NET thread #89
+``Created ET_NET thread #90
+``Created ET_NET thread #91
+``Created ET_NET thread #92
+``Created ET_NET thread #93
+``Created ET_NET thread #94
+``Created ET_NET thread #95
+``Created ET_NET thread #96
+``Created ET_NET thread #97
+``Created ET_NET thread #98
+``Created ET_NET thread #99
+``Created ET_NET thread #100
+``Created accept thread #1``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_100_10.gold b/tests/gold_tests/thread_config/gold/thread_100_10.gold
new file mode 100644
index 0000000..dbbd404
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_100_10.gold
@@ -0,0 +1,111 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``Created ET_NET thread #33
+``Created ET_NET thread #34
+``Created ET_NET thread #35
+``Created ET_NET thread #36
+``Created ET_NET thread #37
+``Created ET_NET thread #38
+``Created ET_NET thread #39
+``Created ET_NET thread #40
+``Created ET_NET thread #41
+``Created ET_NET thread #42
+``Created ET_NET thread #43
+``Created ET_NET thread #44
+``Created ET_NET thread #45
+``Created ET_NET thread #46
+``Created ET_NET thread #47
+``Created ET_NET thread #48
+``Created ET_NET thread #49
+``Created ET_NET thread #50
+``Created ET_NET thread #51
+``Created ET_NET thread #52
+``Created ET_NET thread #53
+``Created ET_NET thread #54
+``Created ET_NET thread #55
+``Created ET_NET thread #56
+``Created ET_NET thread #57
+``Created ET_NET thread #58
+``Created ET_NET thread #59
+``Created ET_NET thread #60
+``Created ET_NET thread #61
+``Created ET_NET thread #62
+``Created ET_NET thread #63
+``Created ET_NET thread #64
+``Created ET_NET thread #65
+``Created ET_NET thread #66
+``Created ET_NET thread #67
+``Created ET_NET thread #68
+``Created ET_NET thread #69
+``Created ET_NET thread #70
+``Created ET_NET thread #71
+``Created ET_NET thread #72
+``Created ET_NET thread #73
+``Created ET_NET thread #74
+``Created ET_NET thread #75
+``Created ET_NET thread #76
+``Created ET_NET thread #77
+``Created ET_NET thread #78
+``Created ET_NET thread #79
+``Created ET_NET thread #80
+``Created ET_NET thread #81
+``Created ET_NET thread #82
+``Created ET_NET thread #83
+``Created ET_NET thread #84
+``Created ET_NET thread #85
+``Created ET_NET thread #86
+``Created ET_NET thread #87
+``Created ET_NET thread #88
+``Created ET_NET thread #89
+``Created ET_NET thread #90
+``Created ET_NET thread #91
+``Created ET_NET thread #92
+``Created ET_NET thread #93
+``Created ET_NET thread #94
+``Created ET_NET thread #95
+``Created ET_NET thread #96
+``Created ET_NET thread #97
+``Created ET_NET thread #98
+``Created ET_NET thread #99
+``Created ET_NET thread #100
+``Created accept thread #1``
+``Created accept thread #2``
+``Created accept thread #3``
+``Created accept thread #4``
+``Created accept thread #5``
+``Created accept thread #6``
+``Created accept thread #7``
+``Created accept thread #8``
+``Created accept thread #9``
+``Created accept thread #10``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_1_0.gold b/tests/gold_tests/thread_config/gold/thread_1_0.gold
new file mode 100644
index 0000000..d3e4589
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_1_0.gold
@@ -0,0 +1,2 @@
+``Created ET_NET thread #1
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_1_1.gold b/tests/gold_tests/thread_config/gold/thread_1_1.gold
new file mode 100644
index 0000000..4332375
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_1_1.gold
@@ -0,0 +1,3 @@
+``Created ET_NET thread #1
+``Created accept thread #1``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_1_10.gold b/tests/gold_tests/thread_config/gold/thread_1_10.gold
new file mode 100644
index 0000000..5bd53db
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_1_10.gold
@@ -0,0 +1,12 @@
+``Created ET_NET thread #1
+``Created accept thread #1``
+``Created accept thread #2``
+``Created accept thread #3``
+``Created accept thread #4``
+``Created accept thread #5``
+``Created accept thread #6``
+``Created accept thread #7``
+``Created accept thread #8``
+``Created accept thread #9``
+``Created accept thread #10``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_2_0.gold b/tests/gold_tests/thread_config/gold/thread_2_0.gold
new file mode 100644
index 0000000..824ecd5
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_2_0.gold
@@ -0,0 +1,3 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_2_1.gold b/tests/gold_tests/thread_config/gold/thread_2_1.gold
new file mode 100644
index 0000000..2a9e615
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_2_1.gold
@@ -0,0 +1,4 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created accept thread #1``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_2_10.gold b/tests/gold_tests/thread_config/gold/thread_2_10.gold
new file mode 100644
index 0000000..866f9d6
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_2_10.gold
@@ -0,0 +1,13 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created accept thread #1``
+``Created accept thread #2``
+``Created accept thread #3``
+``Created accept thread #4``
+``Created accept thread #5``
+``Created accept thread #6``
+``Created accept thread #7``
+``Created accept thread #8``
+``Created accept thread #9``
+``Created accept thread #10``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_32_0.gold b/tests/gold_tests/thread_config/gold/thread_32_0.gold
new file mode 100644
index 0000000..1927cb8
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_32_0.gold
@@ -0,0 +1,33 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_32_1.gold b/tests/gold_tests/thread_config/gold/thread_32_1.gold
new file mode 100644
index 0000000..2a705ae
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_32_1.gold
@@ -0,0 +1,34 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``Created accept thread #1``
+``
diff --git a/tests/gold_tests/thread_config/gold/thread_32_10.gold b/tests/gold_tests/thread_config/gold/thread_32_10.gold
new file mode 100644
index 0000000..1f8d425
--- /dev/null
+++ b/tests/gold_tests/thread_config/gold/thread_32_10.gold
@@ -0,0 +1,43 @@
+``Created ET_NET thread #1
+``Created ET_NET thread #2
+``Created ET_NET thread #3
+``Created ET_NET thread #4
+``Created ET_NET thread #5
+``Created ET_NET thread #6
+``Created ET_NET thread #7
+``Created ET_NET thread #8
+``Created ET_NET thread #9
+``Created ET_NET thread #10
+``Created ET_NET thread #11
+``Created ET_NET thread #12
+``Created ET_NET thread #13
+``Created ET_NET thread #14
+``Created ET_NET thread #15
+``Created ET_NET thread #16
+``Created ET_NET thread #17
+``Created ET_NET thread #18
+``Created ET_NET thread #19
+``Created ET_NET thread #20
+``Created ET_NET thread #21
+``Created ET_NET thread #22
+``Created ET_NET thread #23
+``Created ET_NET thread #24
+``Created ET_NET thread #25
+``Created ET_NET thread #26
+``Created ET_NET thread #27
+``Created ET_NET thread #28
+``Created ET_NET thread #29
+``Created ET_NET thread #30
+``Created ET_NET thread #31
+``Created ET_NET thread #32
+``Created accept thread #1``
+``Created accept thread #2``
+``Created accept thread #3``
+``Created accept thread #4``
+``Created accept thread #5``
+``Created accept thread #6``
+``Created accept thread #7``
+``Created accept thread #8``
+``Created accept thread #9``
+``Created accept thread #10``
+``
diff --git a/tests/gold_tests/thread_config/thread_100_0.test.py b/tests/gold_tests/thread_config/thread_100_0.test.py
new file mode 100644
index 0000000..3211971
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_100_0.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 100,
+    'proxy.config.accept_threads': 0,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_100_0.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #101', 'there should be more than 100 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #1', 'there should be more than 0 threads')
diff --git a/tests/gold_tests/thread_config/thread_100_1.test.py b/tests/gold_tests/thread_config/thread_100_1.test.py
new file mode 100644
index 0000000..4117143
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_100_1.test.py
@@ -0,0 +1,62 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 100,
+    'proxy.config.accept_threads': 1,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_100_1.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #101', 'there should be more than 100 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #2', 'there should be more than 1 threads')
diff --git a/tests/gold_tests/thread_config/thread_100_10.test.py b/tests/gold_tests/thread_config/thread_100_10.test.py
new file mode 100644
index 0000000..b6322ef
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_100_10.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 100,
+    'proxy.config.accept_threads': 10,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_100_10.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #101', 'there should be more than 100 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #11', 'there should be more than 10 threads')
diff --git a/tests/gold_tests/thread_config/thread_1_0.test.py b/tests/gold_tests/thread_config/thread_1_0.test.py
new file mode 100644
index 0000000..e423a1f
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_1_0.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 1,
+    'proxy.config.accept_threads': 0,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_1_0.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #2', 'there should be more than 1 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #1', 'there should be more than 0 threads')
diff --git a/tests/gold_tests/thread_config/thread_1_1.test.py b/tests/gold_tests/thread_config/thread_1_1.test.py
new file mode 100644
index 0000000..414b585
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_1_1.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 1,
+    'proxy.config.accept_threads': 1,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_1_1.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #2', 'there should be more than 1 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #2', 'there should be more than 1 threads')
diff --git a/tests/gold_tests/thread_config/thread_1_10.test.py b/tests/gold_tests/thread_config/thread_1_10.test.py
new file mode 100644
index 0000000..4c7c7e9
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_1_10.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 1,
+    'proxy.config.accept_threads': 10,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_1_10.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #2', 'there should be more than 1 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #11', 'there should be more than 10 threads')
diff --git a/tests/gold_tests/thread_config/thread_2_0.test.py b/tests/gold_tests/thread_config/thread_2_0.test.py
new file mode 100644
index 0000000..d642c6e
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_2_0.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 2,
+    'proxy.config.accept_threads': 0,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_2_0.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #3', 'there should be more than 2 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #1', 'there should be more than 0 threads')
diff --git a/tests/gold_tests/thread_config/thread_2_1.test.py b/tests/gold_tests/thread_config/thread_2_1.test.py
new file mode 100644
index 0000000..81cc672
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_2_1.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 2,
+    'proxy.config.accept_threads': 1,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_2_1.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #3', 'there should be more than 2 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #2', 'there should be more than 1 threads')
diff --git a/tests/gold_tests/thread_config/thread_2_10.test.py b/tests/gold_tests/thread_config/thread_2_10.test.py
new file mode 100644
index 0000000..79de9a1
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_2_10.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 2,
+    'proxy.config.accept_threads': 10,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_2_10.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #3', 'there should be more than 2 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #11', 'there should be more than 10 threads')
diff --git a/tests/gold_tests/thread_config/thread_32_0.test.py b/tests/gold_tests/thread_config/thread_32_0.test.py
new file mode 100644
index 0000000..3f874af
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_32_0.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 32,
+    'proxy.config.accept_threads': 0,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_32_0.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #33', 'there should be more than 32 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #1', 'there should be more than 0 threads')
diff --git a/tests/gold_tests/thread_config/thread_32_1.test.py b/tests/gold_tests/thread_config/thread_32_1.test.py
new file mode 100644
index 0000000..09026af
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_32_1.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 32,
+    'proxy.config.accept_threads': 1,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_32_1.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #33', 'there should be more than 32 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #2', 'there should be more than 1 threads')
diff --git a/tests/gold_tests/thread_config/thread_32_10.test.py b/tests/gold_tests/thread_config/thread_32_10.test.py
new file mode 100644
index 0000000..4bb7580
--- /dev/null
+++ b/tests/gold_tests/thread_config/thread_32_10.test.py
@@ -0,0 +1,61 @@
+'''
+'''
+#  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 sys
+
+Test.Summary = 'Test that Trafficserver starts with default configurations.'
+Test.SkipUnless(Condition.HasProgram('curl', 'Curl need to be installed on system for this test to work'))
+
+Test.ContinueOnFail = True
+
+ts = Test.MakeATSProcess('ts')
+server = Test.MakeOriginServer('server')
+
+Test.testName = ''
+request_header = {
+    'headers': 'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n', 
+    'timestamp': '1469733493.993', 
+    'body': ''}
+response_header = {
+    'headers': 'HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n',
+    'timestamp': '1469733493.993', 
+    'body': ''
+}
+server.addResponse("sessionfile.log", request_header, response_header)
+
+ts.Disk.records_config.update({
+    'proxy.config.exec_thread.autoconfig': 0,
+    'proxy.config.exec_thread.autoconfig.scale': 1.5,
+    'proxy.config.exec_thread.limit': 32,
+    'proxy.config.accept_threads': 10,
+    'proxy.config.diags.debug.enabled': 1,
+    'proxy.config.diags.debug.tags': 'iocore_thread_start|iocore_net_accept_start'})
+
+ts.Disk.remap_config.AddLine(
+    'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port)
+)
+
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = 'curl --proxy http://127.0.0.1:{0} http://www.example.com -H "Proxy-Connection: Keep-Alive" --verbose'.format(ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.StartBefore(ts)
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.Streams.stderr = 'gold/http_200.gold'
+ts.Streams.stderr = 'gold/thread_32_10.gold'
+ts.Streams.stderr += Testers.ExcludesExpression('Created ET\_NET thread #33', 'there should be more than 32 threads')
+ts.Streams.stderr += Testers.ExcludesExpression('Created accept thread #11', 'there should be more than 10 threads')

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].