Skip to content

Commit

Permalink
Merge branch 'master' of github.com:svenvc/zinc into svenvc-master
Browse files Browse the repository at this point in the history
* 'master' of github.com:svenvc/zinc:
  Add a postLoadDoIt to recompile the ZnLogEvent hierarchy when loading the Zinc-HTTP package. This is a hack that should be removed later on.
  Make sure to touch all #printContentsOn: methods in the ZnLogEvent hierarchy. Introducte ZnLogEvent class>>#printAddress:on: helper method that relies on SocketAddress.
  Add ZnLogEventTest with some sanity elementary unit tests
  Change the order of the instance variables of ZnLogEvent
  Make sure to exercise all logLevels in ZnServerTest>>#testLogging
  Add ZnServerTest>>#testLogging with ZnLogEvent rendering
  • Loading branch information
hellerve committed Oct 2, 2023
2 parents 16992b4 + 848c550 commit bfeeb13
Show file tree
Hide file tree
Showing 43 changed files with 172 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ baseline: spec
package: 'Zinc-Character-Encoding-Tests' with: [ spec requires: 'Zinc-Character-Encoding-Core' ];
package: 'Zinc-Resource-Meta-Core' with: [ spec requires: 'Zinc-Character-Encoding-Core' ];
package: 'Zinc-Resource-Meta-Tests' with: [ spec requires: 'Zinc-Resource-Meta-Core' ];
package: 'Zinc-HTTP' with: [ spec requires: #('Zinc-Character-Encoding-Core' 'Zinc-Resource-Meta-Core') ];
package: 'Zinc-HTTP' with: [
spec postLoadDoIt: #recompileZnLogEventHierarchy; requires: #('Zinc-Character-Encoding-Core' 'Zinc-Resource-Meta-Core') ];
package: 'Zinc-HTTP-Examples' with: [ spec requires: #('Zinc-HTTP') ];
package: 'Zinc-Tests' with: [ spec requires: 'Zinc-HTTP' ];
package: 'Zinc-Zodiac-Core' with: [ spec requires: #('Zinc-HTTP' 'Zodiac-Core') ];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
doits
recompileZnLogEventHierarchy
"This is a hack, but somehow there is something wrong in the instance variables layout,
which can only be fixed by recompiling, which should happen but doesn't, so force it."

ZnLogEvent withAllSubclassesDo: #recompile
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Connection Closed '.
address
ifNil: [ stream print: address ]
ifNotNil: [ address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ].
self class printAddress: address on: stream.
stream nextPut: $:; print: port
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Following Redirect '; print: target
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Ignoring Exception On Connection Reuse '; print: exception
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Retrying '; print: exception
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

request requestLine printMethodAndUriOn: stream.
stream space; print: response code.
response hasEntity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Connection Accepted'.
address ifNotNil: [
stream space.
address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ]
self class printAddress: address on: stream
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Connection Established '; nextPutAll: hostname asString; nextPut: $:; print: port.
proxy ifNotNil: [ stream << ' via proxy '; print: proxy ].
stream space.
address
ifNil: [ stream print: address ]
ifNotNil: [ address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ].
self class printAddress: address on: stream.
stream nextPut: $:; print: port.
stream space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Connection Rejected'.
address ifNotNil: [
stream space.
address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ]
self class printAddress: address on: stream
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
utilities
printAddress: address on: stream
"Try printing address as a IPv4 dotted address to stream.
If that fails, just print address as an object to stream."

[ address asSocketAddress printOn: stream ] on: Error do: [ stream print: address ]
4 changes: 2 additions & 2 deletions repository/Zinc-HTTP.package/ZnLogEvent.class/properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
"LogEventAnnouncer"
],
"instvars" : [
"timestamp",
"id",
"processId"
"processId",
"timestamp"
],
"name" : "ZnLogEvent",
"type" : "normal"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Request Read '; print: request; space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Request Handled '; print: request; space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Request Written '; print: request; space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Response Read '; print: response; space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Response Written '; print: response; space; print: duration; << 'ms'
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Connection Closed'.
address ifNotNil: [
stream space.
address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ]
self class printAddress: address on: stream
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream nextPutAll: subject asString
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Handler Error '; print: exception
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Read Error '; print: exception
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Socket Bound '.
address
ifNil: [ stream print: address ]
ifNotNil: [ address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ].
self class printAddress: address on: stream.
stream nextPut: $:; print: port
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Socket Released '.
address
ifNil: [ stream print: address ]
ifNotNil: [ address do: [ :each | stream print: each ] separatedBy: [ stream nextPut: $. ] ].
self class printAddress: address on: stream.
stream nextPut: $:; print: port
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

description ifNotNil: [ stream << 'Started '; << description ]
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

description ifNotNil: [ stream << 'Stopped '; << description ]
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

request requestLine printMethodAndUriOn: stream.
stream space; print: response code.
response hasEntity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream << 'Server Write Error '; print: exception
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream nextPutAll: method; space.
url printPathQueryFragmentOn: stream.
stream space; print: response.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
printing
printContentsOn: stream
super printContentsOn: stream.

stream nextPutAll: method; space.
url printPathQueryFragmentOn: stream.
stream space; print: response.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
accessing
clientId
^ 'client-1'
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
accessing
request
^ ZnRequest get: 'http://foo.com/test'
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
accessing
response
^ ZnResponse ok: (ZnEntity text: 'OK')
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
accessing
serverId
^ 'server-1'
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
testing
testClientTransactionEvent
| event |
(event := ZnClientTransactionEvent new)
clientId: self clientId;
request: self request;
response: self response;
requestDuration: self timing requestDuration;
responseDuration: self timing responseDuration.
self assert: event id isInteger.
self assert: event processId isInteger.
self assert: event timestamp <= DateAndTime now.
self assert: event clientId equals: self clientId.
self assert: event request uri equals: self request uri.
self assert: event request method equals: self request method.
self assert: event response code equals: self response code.
self assert: event duration equals: self timing requestDuration + self timing responseDuration.
self assert: event printString isString.
^ event
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
testing
testServerTransactionEvent
| event |
(event := ZnServerTransactionEvent new)
serverId: self serverId;
request: self request;
response: self response;
timing: self timing.
self assert: event id isInteger.
self assert: event processId isInteger.
self assert: event timestamp <= DateAndTime now.
self assert: event serverId equals: self serverId.
self assert: event request uri equals: self request uri.
self assert: event request method equals: self request method.
self assert: event response code equals: self response code.
self assert: event duration equals: self timing totalDuration.
self assert: event printString isString.
^ event
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
testing
testSimplifiedClientTransactionEvent
| event |
(event := ZnSimplifiedClientTransactionEvent new)
clientId: self clientId;
request: self request;
response: self response;
requestDuration: self timing requestDuration;
responseDuration: self timing responseDuration.
self assert: event id isInteger.
self assert: event processId isInteger.
self assert: event timestamp <= DateAndTime now.
self assert: event clientId equals: self clientId.
self assert: event url equals: self request uri.
self assert: event method equals: self request method.
self assert: event responseCode equals: self response code.
self assert: event size equals: self response contentLength.
self assert: event duration equals: self timing requestDuration + self timing responseDuration.
self assert: event printString isString.
^ event
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
testing
testSimplifiedServerTransactionEvent
| event |
(event := ZnSimplifiedServerTransactionEvent new)
serverId: self serverId;
request: self request;
response: self response;
timing: self timing.
self assert: event id isInteger.
self assert: event processId isInteger.
self assert: event timestamp <= DateAndTime now.
self assert: event serverId equals: self serverId.
self assert: event url equals: self request uri.
self assert: event method equals: self request method.
self assert: event responseCode equals: self response code.
self assert: event size equals: self response contentLength.
self assert: event duration equals: self timing totalDuration.
self assert: event printString isString.
^ event
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
accessing
timing
^ ZnServerTransactionTiming new
requestDuration: 1;
responseDuration: 2;
yourself
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "ZnUnixSocketClientTest",
"name" : "ZnLogEventTest",
"type" : "normal"
}
Loading

0 comments on commit bfeeb13

Please sign in to comment.