[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-11 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

--- Comment #6 from Michael Osipov <1983-01...@gmx.net> ---
(In reply to Philippe Mouawad from comment #5)
> Author:   pmouawad
> Date: Tue Apr 10 17:03:44 2018 UTC
> Changed paths:2
> Log Message:  
> 
> Bug 62252 - HTTP header merging logic does not correspond to the
> documentation
> Bugzilla Id: 62252
> 
> Changed paths
> jmeter/trunk/xdocs/changes.xml
> jmeter/trunk/xdocs/usermanual/component_reference.xml

Changes look good now.

Can you still point me to the spots in HC4 where content-type is set by
default?

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-10 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

Philippe Mouawad <p.moua...@ubik-ingenierie.com> changed:

   What|Removed |Added

   Keywords||FixedInTrunk
 Status|NEEDINFO|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |JMETER_4.1

--- Comment #5 from Philippe Mouawad <p.moua...@ubik-ingenierie.com> ---
Author: pmouawad
Date:   Tue Apr 10 17:03:44 2018 UTC
Changed paths:  2
Log Message:    

Bug 62252 - HTTP header merging logic does not correspond to the documentation
Bugzilla Id: 62252

Changed paths
jmeter/trunk/xdocs/changes.xml
jmeter/trunk/xdocs/usermanual/component_reference.xml

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-10 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

--- Comment #4 from Michael Osipov <1983-01...@gmx.net> ---
(In reply to Philippe Mouawad from comment #3)
> Hello,
> Can you open another bugzilla for the ability to remove a header.
> 
> Do you have an idea how we could ergonomically propose that ?

I will open a new one. Yes, I have some ideas. We need basically to add a third
column in the pane with the label "Action". An enum with "Add", "Replace" and
"Remove".

"Add": Adds a header value even is already present in the parent or in the
child. Multiple header values are valid.
"Replace": Replaces the (all) previous header value(s) with this value.
"Remove": Removes one distinct matching header value or if left blank, all
values.

Make sense?

> Note that Content-Type is set by HC4 in some cases.

Which are? I will remove them right away because the use has to be in control
of this.

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-05 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

--- Comment #3 from Philippe Mouawad  ---
Hello,
Can you open another bugzilla for the ability to remove a header.

Do you have an idea how we could ergonomically propose that ?

Note that Content-Type is set by HC4 in some cases.
Thanks

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-05 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

--- Comment #2 from Michael Osipov <1983-01...@gmx.net> ---
(In reply to Philippe Mouawad from comment #1)
> (In reply to Michael Osipov from comment #0)
> > 1. Add a header manager in test plan with "Content-Type: text/plain"
> > 2. Add thread group
> > 2.1. Add header manager to TG with "Content-Type: "
> > 2.2. Add HTTP request to TG with, e.g., PUT
> > 3. Run the plan
> > 
> > Result tree says:
> > > Request Headers:
> > > Connection: keep-alive
> > > Content-Type: 
> > > Content-Length: 0
> > > Host: ...
> > > User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_161)
> > 
> > The documentation says:
> > > JMeter now supports multiple Header Managers. The header entries are 
> > > merged to form the list for the sampler. If an entry to be merged matches 
> > > an existing header name, it replaces the previous entry, unless the entry 
> > > value is empty, in which case any existing entry is removed. This allows 
> > > one to set up a default set of headers, and apply adjustments to 
> > > particular samplers.
> > 
> > Checking the source code:
> > https://github.com/apache/jmeter/blob/
> > bdb88cb72a5b71f5bbc6f35a03f36890268b468b/src/protocol/http/org/apache/jmeter/
> > protocol/http/control/HeaderManager.java#L262-L282
> > 
> > I cannot see that on an empty value the parent header is removed. A
> > non-existing header and a empty value header are different things.
> > 
> > See lengthly discussion in Jetty:
> > https://github.com/eclipse/jetty.project/issues/1116
> > 
> > Basically, there is no remove here, but a mere override.
> 
> Yes documentation is wrong.
> 
> What is your opinion ? 
> How should we understand the jetty discussion ? Should we be able to send
> empty header value ?


The problem is two fold:
1. There is no way to drop a header from being sent, regardless of the docs.
2. The doc says that a empty header drops the previous one, but empty headers
are perfectly valid. The Jetty issue was just an demonstration of a
misinterpretation of the RFC.

Of course, I could use a preprocessor, but that would make the header manager
obsolete. In fact, I did not even try edge cases like supplying the same header
several times which is perfectly valid according to RFC 7230.

-- 
You are receiving this mail because:
You are the assignee for the bug.

[Bug 62252] HTTP header merging logic does not correspond to the documentation

2018-04-05 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=62252

Philippe Mouawad  changed:

   What|Removed |Added

 CC||p.mouawad@ubik-ingenierie.c
   ||om
 Status|NEW |NEEDINFO

--- Comment #1 from Philippe Mouawad  ---
(In reply to Michael Osipov from comment #0)
> 1. Add a header manager in test plan with "Content-Type: text/plain"
> 2. Add thread group
> 2.1. Add header manager to TG with "Content-Type: "
> 2.2. Add HTTP request to TG with, e.g., PUT
> 3. Run the plan
> 
> Result tree says:
> > Request Headers:
> > Connection: keep-alive
> > Content-Type: 
> > Content-Length: 0
> > Host: ...
> > User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_161)
> 
> The documentation says:
> > JMeter now supports multiple Header Managers. The header entries are merged 
> > to form the list for the sampler. If an entry to be merged matches an 
> > existing header name, it replaces the previous entry, unless the entry 
> > value is empty, in which case any existing entry is removed. This allows 
> > one to set up a default set of headers, and apply adjustments to particular 
> > samplers.
> 
> Checking the source code:
> https://github.com/apache/jmeter/blob/
> bdb88cb72a5b71f5bbc6f35a03f36890268b468b/src/protocol/http/org/apache/jmeter/
> protocol/http/control/HeaderManager.java#L262-L282
> 
> I cannot see that on an empty value the parent header is removed. A
> non-existing header and a empty value header are different things.
> 
> See lengthly discussion in Jetty:
> https://github.com/eclipse/jetty.project/issues/1116
> 
> Basically, there is no remove here, but a mere override.

Yes documentation is wrong.

What is your opinion ? 
How should we understand the jetty discussion ? Should we be able to send empty
header value ?

Thanks

-- 
You are receiving this mail because:
You are the assignee for the bug.