Badjedi04 / WebServerDesign

My first GitHub repository.
0 stars 0 forks source link

Assignment 4 #8

Open ibnesayeed opened 1 year ago

ibnesayeed commented 1 year ago
================================================================================
Assignment: cs531a4
Student: Prashant Tomar <cs_ptoma001@cs.odu.edu>
Time: 20221205-195856 UTC
Repository: https://github.com/Badjedi04/Hello-Git-World/tree/a4
Server: cs531-cs_ptoma001
================================================================================

Deploying server: cs531-cs_ptoma001

Cloning the `https://github.com/Badjedi04/Hello-Git-World.git` repo and checking the `a4` branch/tag out
Released at: 2022-12-05T01:01:36Z
Step 1/14 : FROM python
 ---> e285995a3494
Step 2/14 : WORKDIR /app
 ---> Using cache
 ---> 6600eabbab3a
Step 3/14 : COPY samples ./samples/
 ---> Using cache
 ---> 949276e1b9be
Step 4/14 : COPY public ./public/
 ---> Using cache
 ---> 7c9d56d6d1bd
Step 5/14 : COPY bootstrap.sh ./
 ---> Using cache
 ---> 57e16d9c7443
Step 6/14 : RUN  chmod a+x bootstrap.sh
 ---> Using cache
 ---> 68a31c8515c9
Step 7/14 : RUN  ./bootstrap.sh
 ---> Using cache
 ---> 9e7c0f20c43c
Step 8/14 : COPY requirements.txt /app
 ---> Using cache
 ---> 5bd09434e2e6
Step 9/14 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> bb81ac0997b0
Step 10/14 : COPY src ./src/
 ---> Using cache
 ---> b9547f15f832
Step 11/14 : COPY Configuration ./Configuration/
 ---> Using cache
 ---> 6e0045bd5e1a
Step 12/14 : COPY Main.py ./
 ---> Using cache
 ---> 344c869adb8f
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> fea1afb27f3b
Step 14/14 : CMD ["python", "Main.py"]
 ---> Using cache
 ---> fcb545bd3f25
Successfully built fcb545bd3f25
Successfully tagged cs531/cs_ptoma001:a4

A new container is created and the server `cs531-cs_ptoma001` is deployed successfully

Testing server: cs531-cs_ptoma001 against cs531a4 test suite

Testing cs531-cs_ptoma001:80
--------------------------------------------------------------------------------
test_basic_auth_realm: Test whether files are protected with HTTP Basic auth and return configured realm
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header has value `Basic realm="Fried Twice"`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Basic realm="Fried Twice"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_basic_wrong_auth_unauthorized: Test whether access is unauthorized with wrong Authorization header
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header has value `Basic realm="Fried Twice"`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Authorization: Basic YmRhOm1sbg==
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Basic realm="Fried Twice"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_nested_basic_auth: Test whether files in nested directories are protected with HTTP Basic auth
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header has value `Basic realm="Fried Twice"`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/1/protected2 HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Basic realm="Fried Twice"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_basic_auth_ok: Test whether access is granted with valid Authorization header
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `application/octet-stream`
* `Content-Length` header is present
* `Content-Length` header has value `24`
* Payload contains `this file is protected`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Referer: http://cs531-cs_ptoma001/a4-test/index.html
> Authorization: Basic bWxuOm1sbg==
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 24
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "8ed899d84c0b40379d76da3fa7f7670b;908a82d72803d8590d34c93931a8f5b6"
< Content-Type: application/octet-stream
< Connection: close
< 
* [Payload redacted (24 bytes)]

--------------------------------------------------------------------------------
test_nested_basic_auth_ok: Test whether access is granted with valid Authorization header in nested directories
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `application/octet-stream`
* `Content-Length` header is present
* `Content-Length` header has value `29`
* Payload contains `this file is protected too!`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/1/protected2 HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Authorization: Basic YmRhOmJkYQ==
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 29
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "a273c13b965967fa99646f6cde0f0ef2;e4f3a0cd807eafebc16db7b3b26cc824"
< Content-Type: application/octet-stream
< Connection: close
< 
* [Payload redacted (29 bytes)]

--------------------------------------------------------------------------------
test_double_auth_bad: Test whether two Authorization headers report a bad request
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `400`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is not empty
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Authorization: Basic YmRhOmJkYQ==
> Authorization: Basic ZZRhOmJkYQ==
> Connection: close
> 

< HTTP/1.1 400 Bad Request
< Date: Mon, 05 Dec 2022 19:59:03 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< 
* [Payload redacted (168 bytes)]

--------------------------------------------------------------------------------
test_nested_digest_auth: Test whether files in nested directories are protected with HTTP Digest auth
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4xMDY1MjYxIDYzNDUwOGZmNTUxYzczNTFkY2MzY2RiZWE0ZTE1NDkz",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_head_nested_digest_auth: Test whether HEAD method in nested directories is protected with HTTP Digest auth
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> HEAD http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4xMjE2NDcgMzdkYWJkYjdhMjRlZjhlYzE1YjY0YzBlYWY0ZGQ3NGQ=",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close

--------------------------------------------------------------------------------
test_options_nested_digest_auth: Test whether OPTIONS method in nested directories is protected with HTTP Digest auth
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> OPTIONS http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Allow: GET, HEAD, OPTIONS, TRACE
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4xMzQyNDc1IGFiMjk2ZjA3YTg5MTJjMWZiZDcyYTVlNGYxZDk4MTQ3",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close

--------------------------------------------------------------------------------
test_wrong_realm_unauthorized: Test whether an incorrect realm prevents authorization
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Authorization: Digest username="mln", realm="ColonialPlace", uri="http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt", qop=auth, nonce="MTY3MDI3MDM0NC4xNDk2Mzc3IDE5YmVlYzI5MzhhOGM5Yjg0NzdmZDA0OWE1ZjVkMzFh", nc=00000001, cnonce="014a54548c61ba03827ef6a4dc2f7b4c", response="9f8cb728608d4805ced90fc2c7bd3961"
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4xNjIzNTc4IGExOWRkZjEyMDI0MjY2Y2FlNmUwNDljMWQzMTdkYzcw",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_wrong_ncount_unauthorized: Test whether an incorrect nonce count prevents authorization
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Authorization: Digest username="mln", realm="Colonial Place", uri="http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt", qop=auth, nonce="MTY3MDI3MDM0NC4xODE4MDA0IGVlODk1MzExMjRmMjczNWE1NWZjNTRjNmRhOGE2YjA2", nc=00000002, cnonce="014a54548c61ba03827ef6a4dc2f7b4c", response="e8906b7cf75c94689243512589077037"
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4xOTY4NjU4IDQ5MTZlYzg1Y2U2ZWFhMDlkODRhOGFiOGQxY2UzNDBl",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_wrong_digest_response_unauthorized: Test whether an incorrect digest response prevents authorization
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Authorization: Digest username="mln", realm="Colonial Place", uri="http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt", qop=auth, nonce="MTY3MDI3MDM0NC4yMTM4MTQgYTIyMGM2NzRkYTdhNjAyYjM5YzBmY2I1MzViMDIyYjM", nc=00000001, cnonce="014a54548c61ba03827ef6a4dc2f7b4c", response="8d8c8d24442268e80b68473a2bcff92a"
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4yMzAwMTU4IGQzZTU4N2JlYTg0YWVhZGExYmE5ZGU5MzdjZWJlZTZk",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_wrong_digest_user_unauthorized: Test whether an incorrect digest user prevents authorization
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Authorization: Digest username="bda", realm="Colonial Place", uri="http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt", qop=auth, nonce="MTY3MDI3MDM0NC4yNDEzMjA4IDUwOGE3ZWNjM2I4OWVkNTdkODk2ODgwNWNhYmZmYmVm", nc=00000002, cnonce="014a54548c61ba03827ef6a4dc2f7b4c", response="119e25c5c9d6b3ed85c33c94b1f35a6a"
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4yNTgxOTQyIDQxZTRhZDBkYTRlOWE4YzIyYmNkYzkxZDA3ZDVlMzFi",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_correct_realm_authorized: Test whether a correct realm with other values grants authorization
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Authentication-Info` header is present
* `Authentication-Info` header contains `14a697b9f2c8ca0d17ff895c15d94ef7`
[PASSED]

> GET http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Authorization: Digest username="mln", realm="Colonial Place", uri="http://cs531-cs_ptoma001/a4-test/limited2/foo/bar.txt", qop=auth, nonce="MTY3MDI3MDM0NC4yNzMyMjk0IDM5NTc3YTM4ZmU2NTMwYmY1OTFmYmI1YWJlY2I3NTc0", nc=00000001, cnonce="014a54548c61ba03827ef6a4dc2f7b4c", response="250ac153b890377fbddef2af9932f57c"
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 18
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "2d984d55cdc9de46f8dabb36b57a86f4;e476f1e06d1ea2edcec6575dec8337d1"
< Content-Type: text/plain
< Authentication-Info: qop= auth, rspauth="14a697b9f2c8ca0d17ff895c15d94ef7", cnonce="014a54548c61ba03827ef6a4dc2f7b4c", nc=00000001
< Connection: close
< 
* [Payload redacted (18 bytes)]

--------------------------------------------------------------------------------
test_auth_over_conditional_get: Test whether authorization is ensured before conditional GET precondition check
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header begins with `Digest`
[PASSED]

> GET /a4-test/limited2/foo/bar.txt HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "x248kjaldsf00000000002"
> Connection: close
> 

< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Digest realm="Colonial Place", algorithm=MD5, qop= auth, nonce="MTY3MDI3MDM0NC4yOTczNDczIGVmYWY0NmRmNzgzMDY0ZjE3ZjUzMzM4YWFjMDcwZTg1",opaque="0cbb87a9369a5fd1a97e01bd569daa31"
< Connection: close
< 
* [Payload redacted (150 bytes)]

--------------------------------------------------------------------------------
test_large_range_not_satisfiable: Test whether a Range larger than the file returns 416 Range Not Satisfiable
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `416`
* Payload is empty
[PASSED]

> HEAD /a4-test/index.html.ru.koi8-r HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Range: bytes=20000-29999
> Connection: close
> 

< HTTP/1.1 416 Requested Range Not Satisfiable
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Content-Type: text/html; charset=koi8-r
< Content-Range: bytes */7277
< Content-Language: ru
< Connection: close

--------------------------------------------------------------------------------
test_pipeline_auth: Test whether authorization is respected in pipeline requests
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `416`
* Parsing second response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Language` header is present
* `Content-Language` header has value `de`
* Parsing third response
* Response parsed
* Status is `401`
* `WWW-Authenticate` header is present
* `WWW-Authenticate` header has value `Basic realm="Fried Twice"`
* Parsing fourth response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Language` header is present
* `Content-Language` header has value `en`
* Parsing fifth response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header has value `text/html; charset=iso-2022-jp`
* `Content-Language` header is present
* `Content-Language` header has value `ja`
* `Content-Length` header is present
* `Content-Length` header has value `7635`
* Payload is empty
* Socket connection is closed
[PASSED]

> HEAD http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Range: bytes=20000-29999
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Authorization: Basic YmRhOmJkYQ==
> Host: cs531-cs_ptoma001:80
> 
> HEAD http://cs531-cs_ptoma001/a4-test/index.html.de HTTP/1.1
> Host: cs531-cs_ptoma001:80
> 
> HEAD http://cs531-cs_ptoma001/a4-test/limited1/protected HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 4 Tester/1670270343
> Authorization: Basic YmRhOmJkYQxx
> 
> HEAD http://cs531-cs_ptoma001/a4-test/index.html.en HTTP/1.1
> Host: cs531-cs_ptoma001:80
> 
> HEAD http://cs531-cs_ptoma001/a4-test/index.html.ja.jis HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Connection: close
> 

< HTTP/1.1 416 Requested Range Not Satisfiable
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Content-Type: application/octet-stream
< Content-Range: bytes */24
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7316
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "1f2e3787d5543944195a962517a8fd8d;6b5df622bb03ab070e92ab355230bb9c"
< Content-Type: text/html
< Content-Language: de
< 
< HTTP/1.1 401 Authorization Required
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< WWW-Authenticate: Basic realm="Fried Twice"
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7233
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "8861349ef2fe9e4a28054f96832ae7cf;9f3996931eca2c3e03b7417ed62eaed8"
< Content-Type: text/html
< Content-Language: en
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:59:04 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7635
< Last-Modified: Tue, 10 Jan 2012 00:02:44 GMT
< Etag: "7f4abbb6cfe16587a6ce6c1e98c99c3c;e5df57d32e428543d5d1233c07d1c798"
< Content-Type: text/html; charset=iso-2022-jp
< Content-Language: ja
< Connection: close

=================================== SUMMARY ====================================
Server: cs531-cs_ptoma001:80
Test Case Results:
PASSED: test_basic_auth_realm
PASSED: test_basic_wrong_auth_unauthorized
PASSED: test_nested_basic_auth
PASSED: test_basic_auth_ok
PASSED: test_nested_basic_auth_ok
PASSED: test_double_auth_bad
PASSED: test_nested_digest_auth
PASSED: test_head_nested_digest_auth
PASSED: test_options_nested_digest_auth
PASSED: test_wrong_realm_unauthorized
PASSED: test_wrong_ncount_unauthorized
PASSED: test_wrong_digest_response_unauthorized
PASSED: test_wrong_digest_user_unauthorized
PASSED: test_correct_realm_authorized
PASSED: test_auth_over_conditional_get
PASSED: test_large_range_not_satisfiable
PASSED: test_pipeline_auth
--------------------------------------------------------------------------------
TOTAL: 17, PASSED: 17, FAILED: 0
===============================================================================

Destroying server: cs531-cs_ptoma001
Server `cs531-cs_ptoma001` destroyed successfully.
ibnesayeed commented 1 year ago
================================================================================
Assignment: cs531a3
Student: Prashant Tomar <cs_ptoma001@cs.odu.edu>
Time: 20221205-195746 UTC
Repository: https://github.com/Badjedi04/Hello-Git-World/tree/a4
Server: cs531-cs_ptoma001
================================================================================

Deploying server: cs531-cs_ptoma001

Cloning the `https://github.com/Badjedi04/Hello-Git-World.git` repo and checking the `a4` branch/tag out
Released at: 2022-12-05T01:01:36Z
Step 1/14 : FROM python
 ---> e285995a3494
Step 2/14 : WORKDIR /app
 ---> Using cache
 ---> 6600eabbab3a
Step 3/14 : COPY samples ./samples/
 ---> Using cache
 ---> 949276e1b9be
Step 4/14 : COPY public ./public/
 ---> Using cache
 ---> 7c9d56d6d1bd
Step 5/14 : COPY bootstrap.sh ./
 ---> Using cache
 ---> 57e16d9c7443
Step 6/14 : RUN  chmod a+x bootstrap.sh
 ---> Using cache
 ---> 68a31c8515c9
Step 7/14 : RUN  ./bootstrap.sh
 ---> Using cache
 ---> 9e7c0f20c43c
Step 8/14 : COPY requirements.txt /app
 ---> Using cache
 ---> 5bd09434e2e6
Step 9/14 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> bb81ac0997b0
Step 10/14 : COPY src ./src/
 ---> Using cache
 ---> b9547f15f832
Step 11/14 : COPY Configuration ./Configuration/
 ---> Using cache
 ---> 6e0045bd5e1a
Step 12/14 : COPY Main.py ./
 ---> Using cache
 ---> 344c869adb8f
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> fea1afb27f3b
Step 14/14 : CMD ["python", "Main.py"]
 ---> Using cache
 ---> fcb545bd3f25
Successfully built fcb545bd3f25
Successfully tagged cs531/cs_ptoma001:a4

A new container is created and the server `cs531-cs_ptoma001` is deployed successfully

Testing server: cs531-cs_ptoma001 against cs531a3 test suite

Testing cs531-cs_ptoma001:80
--------------------------------------------------------------------------------
test_useragent_get_text_ok: Test whether a request with a custom user-agent returns OK with corresponding text response
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/plain`
* `Content-Length` header is present
* `Content-Length` header has value `193`
* Payload contains `______________`
[PASSED]

> GET http://cs531-cs_ptoma001/a3-test/fairlane.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 193
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "55d0c79f6feaf06fa2a2dbca5b62efad;ae914008d93cc3905e19cae57e99df5b"
< Content-Type: text/plain
< Connection: close
< 
* [Payload redacted (193 bytes)]

--------------------------------------------------------------------------------
test_partial_content_range_language: Test whether a valid range request header returns partial content in a specific langaue
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `206`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Language` header is present
* `Content-Language` header has value `es`
* `Content-Range` header is present
* `Content-Length` header is present
* `Content-Length` header has value `100`
* Payload size is `100` bytes
[PASSED]

> GET http://cs531-cs_ptoma001/a3-test/index.html.es HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Referer: http://cs531-cs_ptoma001/a3-test/index.html
> Range: bytes=0-99
> Connection: close
> 

< HTTP/1.1 206 Partial Content
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 100
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "003778edfb4ba88f4b6b501a1320594f;44dbf40de77bd554168144d693d42310"
< Content-Type: text/html
< Content-Range: bytes 0-99/7643
< Content-Language: es
< Connection: close
< 
* [Payload redacted (100 bytes)]

--------------------------------------------------------------------------------
test_chunked_404: Test whether a 404 Not Found page returns chunked encoded HTML
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `404`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is not empty
[PASSED]

> GET /a3-test/index.htmll HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Connection: close
> 

< HTTP/1.1 404 Not Found
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (164 bytes)]

--------------------------------------------------------------------------------
test_conditional_head_image_fresh: Test whether conditional HEAD of a fresh image file returns 304 Not Modified
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `304`
* Payload is empty
[PASSED]

> HEAD /a3-test/fairlane.gif HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: Sat, 10 Nov 2018 20:46:11 GMT
> Connection: close
> 

< HTTP/1.1 304 Not Modified
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Content-Type: image/gif
< Connection: close

--------------------------------------------------------------------------------
test_conditional_head_image_stale: Test whether conditional HEAD of a stale image file returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `image/gif`
* Payload is empty
[PASSED]

> HEAD /a3-test/fairlane.gif HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: Sat, 27 Oct 2018 20:46:09 GMT
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 49803
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "f96f06ec4a14a91969a5476e74d08b94;0bfcec6a6dd2f028b642a340ad814f68"
< Content-Type: image/gif
< Connection: close

--------------------------------------------------------------------------------
test_no_accept_header_multiple_choices: Test whether missing Accept header yields multiple choices
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `300`
* `Alternates` header is present
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is empty
[PASSED]

> HEAD /a3-test/fairlane HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 300 Multiple Choice
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/fairlane.gif" 1 {type image/gif}{length 49803}}{ "public/a3-test/fairlane.jpeg" 1 {type image/jpeg}{length 38457}}{ "public/a3-test/fairlane.png" 1 {type image/png}{length 98203}}{ "public/a3-test/fairlane.txt" 1 {type text/plain}{length 193}}
< Transfer-Encoding: chunked
< Vary: negotiate,accept
< TCN: list
< Connection: close

--------------------------------------------------------------------------------
test_ambiguous_accept_header_multiple_choices: Test whether an Accept header with the same qvalue for all image types yields multiple choices
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `300`
* `Alternates` header is present
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is not empty
[PASSED]

> GET /a3-test/fairlane HTTP/1.1
> Accept: image/*; q=1.0
> Host: cs531-cs_ptoma001:80
> Connection: close
> 

< HTTP/1.1 300 Multiple Choice
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/fairlane.gif" 1 {type image/gif}{length 49803}}{ "public/a3-test/fairlane.jpeg" 1 {type image/jpeg}{length 38457}}{ "public/a3-test/fairlane.png" 1 {type image/png}{length 98203}}{ "public/a3-test/fairlane.txt" 1 {type text/plain}{length 193}}
< Transfer-Encoding: chunked
< Vary: negotiate,accept
< TCN: list
< Connection: close
< 
* [Payload redacted (571 bytes)]

--------------------------------------------------------------------------------
test_accept_header_png_ok: Test whether an Accept header with unique qvalue returns a PNG
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `image/png`
* `Content-Length` header is present
* `Content-Length` header has value `98203`
* Payload is empty
[PASSED]

> HEAD /a3-test/fairlane HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept: image/jpeg; q=0.9, image/png; q=0.91, image/tiff; q=0.95
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 98203
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "6ff23fe4f2e350a79791539f2b795dd6;a9d9077bcdd10cd843114e797ff18806"
< Content-Type: image/png
< Content-Location: /a3-test/fairlane.png
< Vary: negotiate,accept
< TCN: choice
< Connection: close

--------------------------------------------------------------------------------
test_accept_header_text_ok: Test whether an Accept header with high qvalue returns plain text
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/plain`
* `Content-Length` header is present
* `Content-Length` header has value `193`
* Payload is empty
[PASSED]

> HEAD /a3-test/fairlane HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept: text/*; q=1.0, image/*; q=0.99
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 193
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "55d0c79f6feaf06fa2a2dbca5b62efad;ae914008d93cc3905e19cae57e99df5b"
< Content-Type: text/plain
< Content-Location: /a3-test/fairlane.txt
< Vary: negotiate,accept
< TCN: choice
< Connection: close

--------------------------------------------------------------------------------
test_not_accptable_encoding: Test whether explicit zero qvalue for all supported encodings returns 406 Not Acceptable
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `406`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is empty
[PASSED]

> HEAD /a3-test/vt-uva.html HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept-Encoding: compress; q=0.0, gzip; q=0.0, deflate; q=0.5
> Connection: close
> 

< HTTP/1.1 406 Not Acceptable
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/vt-uva.html.Z" 1 {type text/html}{encoding compress}{length 42757}}{ "public/a3-test/vt-uva.html.gz" 1 {type text/html}{encoding gzip}{length 21840}}
< Transfer-Encoding: chunked
< Vary: negotiate,accept-encoding
< TCN: list
< Connection: close

--------------------------------------------------------------------------------
test_explicit_extention_ignore_content_negotiation: Test whether an explicit existing file extension ignores content negotiation
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Encoding` header is present
* `Content-Encoding` header has value `compress`
* `Content-Length` header is present
* `Content-Length` header has value `42757`
* Payload is empty
[PASSED]

> HEAD /a3-test/vt-uva.html.Z HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept-Encoding: compress; q=0.0, gzip; q=0.5
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 42757
< Last-Modified: Sat, 03 Nov 2018 14:22:55 GMT
< Etag: "a21cdfa0751d75d43e5a663fbd548b82;780f7be0f7003e831e0be5dfc49734e4"
< Content-Type: text/html
< Content-Location: /a3-test/vt-uva.html.Z
< Content-Encoding: compress
< Vary: negotiate,accept-encoding
< TCN: choice
< Connection: close

--------------------------------------------------------------------------------
test_ambiguous_accept_language_multiple_choices: Test whether an Accept-Language header with the same qvalue for more than one available languages yields multiple choices
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `300`
* `Alternates` header is present
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is empty
[PASSED]

> HEAD /a3-test/index.html HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept-Language: en; q=1.0, de; q=1.0, fr; q=1.0
> Connection: close
> 

< HTTP/1.1 300 Multiple Choice
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/index.html.en" 1 {type text/html}{language en}{length 7233}}{ "public/a3-test/index.html.ko.euc-kr" 1 {type text/html}{charset euc-kr}{language ko}{length 6951}}{ "public/a3-test/index.html.es" 1 {type text/html}{language es}{length 7643}}{ "public/a3-test/index.html.ru.koi8-r" 1 {type text/html}{charset koi8-r}{language ru}{length 7277}}{ "public/a3-test/index.html.de" 1 {type text/html}{language de}{length 7316}}{ "public/a3-test/index.html.ja.jis" 1 {type text/html}{charset iso-2022-jp}{language ja}{length 7635}}
< Transfer-Encoding: chunked
< Vary: negotiate,accept-charset,accept-language
< TCN: list
< Connection: close

--------------------------------------------------------------------------------
test_not_accptable_incompatiple_charset: Test whether explicit zero qvalue of charset associated with the explicit language extension returns 406 Not Acceptable
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `406`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is empty
[PASSED]

> HEAD /a3-test/index.html.ja HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Accept-Language: en; q=1.0, ja; q=0.5
> Accept-Charset: euc-jp; q=1.0, iso-2022-jp; q=0.0
> Connection: close
> 

< HTTP/1.1 406 Not Acceptable
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/index.html.ja.jis" 1 {type text/html}{charset iso-2022-jp}{language ja}{length 7635}}
< Transfer-Encoding: chunked
< TCN: list
< Connection: close

--------------------------------------------------------------------------------
test_partial_content_range_text: Test whether a valid range request header returns partial content in plain text
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `206`
* `Content-Type` header is present
* `Content-Type` header begins with `text/plain`
* `Content-Range` header is present
* `Content-Range` header has value `bytes 10-20/193`
* `Content-Length` header is present
* `Content-Length` header has value `11`
* Payload size is `11` bytes
[PASSED]

> GET /a3-test/fairlane.txt HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Range: bytes=10-20
> Connection: close
> 

< HTTP/1.1 206 Partial Content
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 11
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "5979d93e7a97df11b518592ad5b6304b;ae914008d93cc3905e19cae57e99df5b"
< Content-Type: text/plain
< Content-Range: bytes 10-20/193
< Connection: close
< 
* [Payload redacted (11 bytes)]

--------------------------------------------------------------------------------
test_etag_precondition_failure: Test whether a random If-Match ETag returns 412 Precondition Failed
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `412`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Payload is not empty
[PASSED]

> GET /a3-test/fairlane.txt HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "20933948kjaldsf000002"
> Connection: close
> 

< HTTP/1.1 412 Precondition Failed
< Date: Mon, 05 Dec 2022 19:57:53 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (184 bytes)]

--------------------------------------------------------------------------------
test_explicit_language_charset_etag: Test whether explicit language and charset as extensions returns ETag and Content-Type with charset
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header has value `text/html; charset=koi8-r`
* `Content-Language` header is present
* `Content-Language` header has value `ru`
* `ETag` header is present
* `ETag` is not empty and properly formatted in double quotes as `"a4fb640ff753fbdeb23ddc7cf605dd0d;c552dfa58edfa301008787d1e4a1bdac"`
* Payload size is `7277` bytes
[PASSED]

> GET /a3-test/index.html.ru.koi8-r HTTP/1.1
> Host: cs531-cs_ptoma001:80
> User-Agent: CS531 Assignment 3 Tester/1670270273
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:54 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7277
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "a4fb640ff753fbdeb23ddc7cf605dd0d;c552dfa58edfa301008787d1e4a1bdac"
< Content-Type: text/html; charset=koi8-r
< Content-Language: ru
< Connection: close
< 
* [Payload redacted (7277 bytes)]

--------------------------------------------------------------------------------
test_valid_etag_conditional_get: Test whether conditional GET with a valid ETag returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Type` header is present
* `Content-Type` header has value `text/html; charset=koi8-r`
* `Content-Language` header is present
* `Content-Language` header has value `ru`
* Payload size is `7277` bytes
[PASSED]

> GET /a3-test/index.html.ru.koi8-r HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "a4fb640ff753fbdeb23ddc7cf605dd0d;c552dfa58edfa301008787d1e4a1bdac"
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:54 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7277
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "a4fb640ff753fbdeb23ddc7cf605dd0d;c552dfa58edfa301008787d1e4a1bdac"
< Content-Type: text/html; charset=koi8-r
< Content-Language: ru
< Connection: close
< 
* [Payload redacted (7277 bytes)]

--------------------------------------------------------------------------------
test_pipeline_range_negotiate: Test whether multiple pipelined requests with content negotiations are processed and returned in the same order
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `206`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Content-Range` header is present
* `Content-Length` header is present
* `Content-Length` header has value `100`
* Parsing second response
* Response parsed
* Status is `300`
* `Alternates` header is present
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Transfer-Encoding` header is present
* `Transfer-Encoding` header has value `chunked`
* Parsing third response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header has value `text/html; charset=iso-2022-jp`
* `Content-Language` header is present
* `Content-Language` header has value `ja`
* `Content-Length` header is present
* `Content-Length` header has value `7635`
* Payload is empty
* Socket connection is closed
[PASSED]

> HEAD http://cs531-cs_ptoma001/a3-test/index.html.en HTTP/1.1
> Range: bytes=-100
> Host: cs531-cs_ptoma001:80
> 
> HEAD http://cs531-cs_ptoma001/a3-test/index.html HTTP/1.1
> Negotiate: 1.0
> Host: cs531-cs_ptoma001:80
> 
> HEAD http://cs531-cs_ptoma001/a3-test/index.html.ja.jis HTTP/1.1
> Host: cs531-cs_ptoma001:80
> Connection: close
> 

< HTTP/1.1 206 Partial Content
< Date: Mon, 05 Dec 2022 19:57:54 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 100
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "ef1f080a929999b2a84d8d820d9cd727;11df4005e117f7927f8711b2422796ca"
< Content-Type: text/html
< Content-Range: bytes 7133-7232/7233
< Content-Language: en
< 
< HTTP/1.1 300 Multiple Choice
< Date: Mon, 05 Dec 2022 19:57:54 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Alternates: { "public/a3-test/index.html.en" 1 {type text/html}{language en}{length 7233}}{ "public/a3-test/index.html.ko.euc-kr" 1 {type text/html}{charset euc-kr}{language ko}{length 6951}}{ "public/a3-test/index.html.es" 1 {type text/html}{language es}{length 7643}}{ "public/a3-test/index.html.ru.koi8-r" 1 {type text/html}{charset koi8-r}{language ru}{length 7277}}{ "public/a3-test/index.html.de" 1 {type text/html}{language de}{length 7316}}{ "public/a3-test/index.html.ja.jis" 1 {type text/html}{charset iso-2022-jp}{language ja}{length 7635}}
< Transfer-Encoding: chunked
< Vary: negotiate,accept-charset,accept-language
< TCN: list
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:57:54 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 7635
< Last-Modified: Sat, 03 Nov 2018 14:10:11 GMT
< Etag: "7f4abbb6cfe16587a6ce6c1e98c99c3c;74724f13beb2f01202796329fc700b93"
< Content-Type: text/html; charset=iso-2022-jp
< Content-Language: ja
< Connection: close

=================================== SUMMARY ====================================
Server: cs531-cs_ptoma001:80
Test Case Results:
PASSED: test_useragent_get_text_ok
PASSED: test_partial_content_range_language
PASSED: test_chunked_404
PASSED: test_conditional_head_image_fresh
PASSED: test_conditional_head_image_stale
PASSED: test_no_accept_header_multiple_choices
PASSED: test_ambiguous_accept_header_multiple_choices
PASSED: test_accept_header_png_ok
PASSED: test_accept_header_text_ok
PASSED: test_not_accptable_encoding
PASSED: test_explicit_extention_ignore_content_negotiation
PASSED: test_ambiguous_accept_language_multiple_choices
PASSED: test_not_accptable_incompatiple_charset
PASSED: test_partial_content_range_text
PASSED: test_etag_precondition_failure
PASSED: test_explicit_language_charset_etag
PASSED: test_valid_etag_conditional_get
PASSED: test_pipeline_range_negotiate
--------------------------------------------------------------------------------
TOTAL: 18, PASSED: 18, FAILED: 0
===============================================================================

Destroying server: cs531-cs_ptoma001
Server `cs531-cs_ptoma001` destroyed successfully.
ibnesayeed commented 1 year ago
================================================================================
Assignment: cs531a2
Student: Prashant Tomar <cs_ptoma001@cs.odu.edu>
Time: 20221205-195505 UTC
Repository: https://github.com/Badjedi04/Hello-Git-World/tree/a4
Server: cs531-cs_ptoma001
================================================================================

Deploying server: cs531-cs_ptoma001

Cloning the `https://github.com/Badjedi04/Hello-Git-World.git` repo and checking the `a4` branch/tag out
Released at: 2022-12-05T01:01:36Z
Step 1/14 : FROM python
 ---> e285995a3494
Step 2/14 : WORKDIR /app
 ---> Using cache
 ---> 6600eabbab3a
Step 3/14 : COPY samples ./samples/
 ---> Using cache
 ---> 949276e1b9be
Step 4/14 : COPY public ./public/
 ---> Using cache
 ---> 7c9d56d6d1bd
Step 5/14 : COPY bootstrap.sh ./
 ---> Using cache
 ---> 57e16d9c7443
Step 6/14 : RUN  chmod a+x bootstrap.sh
 ---> Using cache
 ---> 68a31c8515c9
Step 7/14 : RUN  ./bootstrap.sh
 ---> Using cache
 ---> 9e7c0f20c43c
Step 8/14 : COPY requirements.txt /app
 ---> Using cache
 ---> 5bd09434e2e6
Step 9/14 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> bb81ac0997b0
Step 10/14 : COPY src ./src/
 ---> Using cache
 ---> b9547f15f832
Step 11/14 : COPY Configuration ./Configuration/
 ---> Using cache
 ---> 6e0045bd5e1a
Step 12/14 : COPY Main.py ./
 ---> Using cache
 ---> 344c869adb8f
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> fea1afb27f3b
Step 14/14 : CMD ["python", "Main.py"]
 ---> Using cache
 ---> fcb545bd3f25
Successfully built fcb545bd3f25
Successfully tagged cs531/cs_ptoma001:a4

A new container is created and the server `cs531-cs_ptoma001` is deployed successfully

Testing server: cs531-cs_ptoma001 against cs531a2 test suite

Testing cs531-cs_ptoma001:80
--------------------------------------------------------------------------------
test_get_directory_listing: Test whether a2-test directory root returns directory listing
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload contains `coolcar.html`
* Payload contains `ford`
* Socket connection is closed
[PASSED]

> GET http://cs531-cs_ptoma001/a2-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Last-Modified: Sat, 20 Oct 2018 03:46:18 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (1669 bytes)]

--------------------------------------------------------------------------------
test_redirect_to_trailing_slash_for_directory_url: Test whether redirects URL to trailing slashes when missing for existing directories
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `301`
* `Location` header is present
* `Location` header ends with `/a2-test/2/`
* Socket connection is closed
[PASSED]

> GET http://cs531-cs_ptoma001/a2-test/2 HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 301 Moved Permanently
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Location: http://cs531-cs_ptoma001/a2-test/2/
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (180 bytes)]

--------------------------------------------------------------------------------
test_redirect_to_trailing_slash_for_directory_path: Test whether redirects path to trailing slashes when missing for existing directories
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `301`
* `Location` header is present
* `Location` header ends with `/a2-test/1/`
* Socket connection is closed
[PASSED]

> GET /a2-test/1 HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 301 Moved Permanently
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Location: http://cs531-cs_ptoma001/a2-test/1/
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (180 bytes)]

--------------------------------------------------------------------------------
test_get_default_index_file: Test whether default index.html is returned instead of directory listing
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is not empty
* Fetching `/a2-test/2/index.html` for content comparison
* Contents of `/a2-test/2/` and `/a2-test/2/index.html` are the same
* Socket connection is closed
[PASSED]

> GET http://cs531-cs_ptoma001/a2-test/2/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html
< Connection: close
< 
* [Payload redacted (1936 bytes)]

--------------------------------------------------------------------------------
test_redirect_as_per_regexp_trailing_wildcard_capture: Test whether redirects as per the regular expression with wildcard trailing capture group
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
[FAILED] ASSERTION: Status expected `302`, returned `200`

> HEAD /a2-test/1/1.3/assignment1.ppt HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 46592
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "ee382d2a8131a110a9e5bf2f9c3cec02;c40c14b00c58ca363b5e5bdc322c0488"
< Content-Type: application/vnd.ms-powerpoint
< Connection: close

--------------------------------------------------------------------------------
test_redirect_as_per_regexp_trailing_specific_file: Test whether redirects as per the regular expression with a specific trailing file name
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
[FAILED] ASSERTION: Status expected `302`, returned `200`

> HEAD /a2-test/coolcar.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 94
< Last-Modified: Sat, 20 Oct 2018 03:43:43 GMT
< Etag: "3baf4df537e7bc0b6623ed11cf551022;23de07b3e95d730975eae39e7c3013bf"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_dont_redirect_target_file: Test whether the target of the configured redirect returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
[PASSED]

> HEAD /a2-test/galaxie.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 96
< Last-Modified: Sat, 20 Oct 2018 03:44:27 GMT
< Etag: "7d344af10346d1a6f168ecc66d6885af;3c5183cf45b00af3c588856eca0b616c"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_conditional_head_fresh: Test whether conditional HEAD of a fresh file returns 304 Not Modified
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `304`
* Payload is empty
[PASSED]

> HEAD /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: Sat, 20 Oct 2018 02:33:21 GMT
> Connection: close
> 

< HTTP/1.1 304 Not Modified
< Date: Mon, 05 Dec 2022 19:55:12 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_conditional_head_stale: Test whether conditional HEAD of a stale file returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
[PASSED]

> HEAD /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: Sat, 20 Oct 2018 02:33:20 GMT
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_conditional_head_invalid_datetime: Test whether conditional HEAD with invalid datetime returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
[PASSED]

> HEAD /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: who-doesn't-want-a-fairlane?
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_conditional_head_unsupported_datetime_format: Test whether conditional HEAD with unsupported datetime format returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
[PASSED]

> HEAD /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Modified-Since: 2018-10-20 02:33:21.304307000 -0000
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_include_etag: Test whether the HEAD response contains an ETag
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `ETag` header is present
* `ETag` is not empty and properly formatted in double quotes as `"e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"`
[PASSED]

> HEAD /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_valid_etag_ok: Test whether a valid ETag returns 200 OK
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload contains `1966 Ford Fairlane`
[PASSED]

> GET /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;666e4e78c009c18ac6355409af5231e7"
< Content-Type: text/html
< Connection: close
< 
* [Payload redacted (1936 bytes)]

--------------------------------------------------------------------------------
test_etag_if_match_failure: Test whether a random ETag returns 412 Precondition Failed
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `412`
[PASSED]

> GET /a2-test/2/fairlane.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "203948kjaldsf002"
> Connection: close
> 

< HTTP/1.1 412 Precondition Failed
< Date: Mon, 05 Dec 2022 19:55:13 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (184 bytes)]

--------------------------------------------------------------------------------
test_implicit_keep_alive_until_timeout: Test whether the socket connection is kept alive by default and closed after the set timeout
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
* Socket connection is kept alive
* Making a subsequent request after `5` seconds
* Reusing existing connection
* Request data sent
* Response data read
* Response parsed
[FAILED] ASSERTION: Status expected `408`, returned `200`

> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> 
> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:14 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:20 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html

--------------------------------------------------------------------------------
test_explicit_keep_alive_until_timeout: Test whether the socket connection is kept alive when explicitly requested and closed after the set timeout
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
* Socket connection is kept alive
* Making a subsequent request after `5` seconds
* Reusing existing connection
* Request data sent
* Response data read
* Response parsed
[FAILED] ASSERTION: Status expected `408`, returned `200`

> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: keep-alive
> 
> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: keep-alive
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:21 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:27 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html

--------------------------------------------------------------------------------
test_trace_unnecessary_conditionals: Test whether many unnecessary conditionals are not processed
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `message/http`
* Payload begins with `TRACE /a2-test/2/index.html HTTP/1.1`
[PASSED]

> TRACE /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> If-Match: "not-a-real-etag"
> If-None-Match: "also-not-a-real-etag"
> If-Modified-Since: Fri, 19 Oct 2018 22:33:21 GMT
> If-Unmodified-Since: Fri, 19 Oct 2018 22:33:21 GMT
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:28 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 254
< Content-Type: message/http
< Connection: close
< 
* [Payload redacted (254 bytes)]

--------------------------------------------------------------------------------
test_pipeline_requests: Test whether multiple pipelined requests are processed and returned in the same order
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Parsing second response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Parsing third response
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload contains `coolcar.html`
* Payload contains `ford`
* Socket connection is closed
[PASSED]

> HEAD /a2-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> 
> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> 
> GET /a2-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:28 GMT
< Server: Assignment2/Version/0.1
< Last-Modified: Sat, 20 Oct 2018 03:46:18 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:28 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:28 GMT
< Server: Assignment2/Version/0.1
< Last-Modified: Sat, 20 Oct 2018 03:46:18 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (1669 bytes)]

--------------------------------------------------------------------------------
test_long_lived_connection: Test whether the socket connection is kept alive to process multiple requests successively
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
* Socket connection is kept alive
* Making second request
* Reusing existing connection
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload is empty
* Socket connection is kept alive
* Making third request
* Reusing existing connection
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* Payload contains `coolcar.html`
* Payload contains `ford`
* Socket connection is closed
[PASSED]

> HEAD /a2-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> 
> HEAD /a2-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> 
> GET /a2-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:28 GMT
< Server: Assignment2/Version/0.1
< Last-Modified: Sat, 20 Oct 2018 03:46:18 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:29 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Sat, 20 Oct 2018 02:33:21 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;aa69625c0af1811ce70246b5d26def1a"
< Content-Type: text/html
< 
< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:55:29 GMT
< Server: Assignment2/Version/0.1
< Last-Modified: Sat, 20 Oct 2018 03:46:18 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (1669 bytes)]

=================================== SUMMARY ====================================
Server: cs531-cs_ptoma001:80
Test Case Results:
PASSED: test_get_directory_listing
PASSED: test_redirect_to_trailing_slash_for_directory_url
PASSED: test_redirect_to_trailing_slash_for_directory_path
PASSED: test_get_default_index_file
FAILED: test_redirect_as_per_regexp_trailing_wildcard_capture
FAILED: test_redirect_as_per_regexp_trailing_specific_file
PASSED: test_dont_redirect_target_file
PASSED: test_conditional_head_fresh
PASSED: test_conditional_head_stale
PASSED: test_conditional_head_invalid_datetime
PASSED: test_conditional_head_unsupported_datetime_format
PASSED: test_include_etag
PASSED: test_valid_etag_ok
PASSED: test_etag_if_match_failure
FAILED: test_implicit_keep_alive_until_timeout
FAILED: test_explicit_keep_alive_until_timeout
PASSED: test_trace_unnecessary_conditionals
PASSED: test_pipeline_requests
PASSED: test_long_lived_connection
--------------------------------------------------------------------------------
TOTAL: 19, PASSED: 15, FAILED: 4
===============================================================================

Destroying server: cs531-cs_ptoma001
Server `cs531-cs_ptoma001` destroyed successfully.
ibnesayeed commented 1 year ago
================================================================================
Assignment: cs531a1
Student: Prashant Tomar <cs_ptoma001@cs.odu.edu>
Time: 20221205-195325 UTC
Repository: https://github.com/Badjedi04/Hello-Git-World/tree/a4
Server: cs531-cs_ptoma001
================================================================================

Deploying server: cs531-cs_ptoma001

Cloning the `https://github.com/Badjedi04/Hello-Git-World.git` repo and checking the `a4` branch/tag out
Released at: 2022-12-05T01:01:36Z
Step 1/14 : FROM python
 ---> e285995a3494
Step 2/14 : WORKDIR /app
 ---> Using cache
 ---> 6600eabbab3a
Step 3/14 : COPY samples ./samples/
 ---> Using cache
 ---> 949276e1b9be
Step 4/14 : COPY public ./public/
 ---> Using cache
 ---> 7c9d56d6d1bd
Step 5/14 : COPY bootstrap.sh ./
 ---> Using cache
 ---> 57e16d9c7443
Step 6/14 : RUN  chmod a+x bootstrap.sh
 ---> Using cache
 ---> 68a31c8515c9
Step 7/14 : RUN  ./bootstrap.sh
 ---> Using cache
 ---> 9e7c0f20c43c
Step 8/14 : COPY requirements.txt /app
 ---> Using cache
 ---> 5bd09434e2e6
Step 9/14 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> bb81ac0997b0
Step 10/14 : COPY src ./src/
 ---> Using cache
 ---> b9547f15f832
Step 11/14 : COPY Configuration ./Configuration/
 ---> Using cache
 ---> 6e0045bd5e1a
Step 12/14 : COPY Main.py ./
 ---> Using cache
 ---> 344c869adb8f
Step 13/14 : EXPOSE 80
 ---> Using cache
 ---> fea1afb27f3b
Step 14/14 : CMD ["python", "Main.py"]
 ---> Using cache
 ---> fcb545bd3f25
Successfully built fcb545bd3f25
Successfully tagged cs531/cs_ptoma001:a4

A new container is created and the server `cs531-cs_ptoma001` is deployed successfully

Testing server: cs531-cs_ptoma001 against cs531a1 test suite

Testing cs531-cs_ptoma001:80
--------------------------------------------------------------------------------
test_url_get_ok: Test whether the URL of the assignment 1 directory returns HTTP/1.1 200 OK on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* HTTP version is `HTTP/1.1`
* Status is `200`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Thu, 27 Sep 2018 17:58:51 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;90deaf5487c296095c4131f5bd33f93f"
< Content-Type: text/html
< Connection: close
< 
* [Payload redacted (1936 bytes)]

--------------------------------------------------------------------------------
test_url_head_ok: Test whether the URL of the assignment 1 directory returns 200 on HEAD
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
* Payload is empty
[PASSED]

> HEAD http://cs531-cs_ptoma001/a1-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Thu, 27 Sep 2018 17:58:51 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;90deaf5487c296095c4131f5bd33f93f"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_path_head_ok: Test whether the relative path of the assignment 1 directory returns 200 on HEAD
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/html`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
* Payload is empty
[PASSED]

> HEAD /a1-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1936
< Last-Modified: Thu, 27 Sep 2018 17:58:51 GMT
< Etag: "e5359f8ba4c1697b0d5088c8344d08d5;90deaf5487c296095c4131f5bd33f93f"
< Content-Type: text/html
< Connection: close

--------------------------------------------------------------------------------
test_path_options_ok: Test whether the relative path of the assignment 1 directory returns 200 on OPTIONS
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Allow` header is present
* `Allow` header contains `GET`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> OPTIONS /a1-test/2/index.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Content-Type: text/html
< Allow: GET, HEAD, OPTIONS, TRACE
< Connection: close

--------------------------------------------------------------------------------
test_get_missing: Test whether a non-existing path returns 404 on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* HTTP version is `HTTP/1.1`
* Status is `404`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> GET /1/1.1/go%20hokies.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 404 Not Found
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (164 bytes)]

--------------------------------------------------------------------------------
test_get_duplicate_path_prefix: Test tight path prefix checking
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* HTTP version is `HTTP/1.1`
* Status is `404`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> GET /a1-test/a1-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 404 Not Found
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (164 bytes)]

--------------------------------------------------------------------------------
test_unsupported_version: Test whether a request with unsupported version returns 505
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `505`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> GET / HTTP/1.11
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 505 HTTP Version Not Supported
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (198 bytes)]

--------------------------------------------------------------------------------
test_invalid_request: Test whether an invalid request returns 400
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `400`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> qwerty
> 

< HTTP/1.1 400 Bad Request
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0

--------------------------------------------------------------------------------
test_missing_host_header: Test whether missing Host header in a request returns 400
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `400`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> GET / HTTP/1.1
> Connection: close
> 

< HTTP/1.1 400 Bad Request
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (168 bytes)]

--------------------------------------------------------------------------------
test_post_not_implemented: Test whether the assignment 1 returns 501 on POST
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `501`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
[PASSED]

> POST /a1-test/ HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 501 Not Implemented
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Allow: GET, HEAD, OPTIONS, TRACE
< Connection: close

--------------------------------------------------------------------------------
test_trace_echoback: Test whether the server echoes back the request on TRACE
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `message/http`
* `Date` header is present
* `Date` header is in the preferred RCF7231 format
* Payload begins with `TRACE /a1-test/1/1.4/ HTTP/1.1`
* Payload contains `User-Agent: CS531 Assignment 1 Tester/1670270013`
* Payload contains `Connection: close`
[PASSED]

> TRACE /a1-test/1/1.4/ HTTP/1.1
> Host: cs531-cs_ptoma001
> User-Agent: CS531 Assignment 1 Tester/1670270013
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 128
< Content-Type: message/http
< Connection: close
< 
* [Payload redacted (128 bytes)]

--------------------------------------------------------------------------------
test_get_escaped_file_name: Test whether the escaped file name is respected
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* Payload contains `lower case html`
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/1/1.4/test%3A.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 25
< Last-Modified: Thu, 27 Sep 2018 17:58:49 GMT
< Etag: "4400055101ad85035c4d0d010bf199b6;fe2d809f89a36aeb2fdacc7f7b33830f"
< Content-Type: text/html
< Connection: close
< 
* [Payload redacted (25 bytes)]

--------------------------------------------------------------------------------
test_get_escape_escaping_character: Test whether the escaped escaping caracter in a file name is respected
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* Payload contains `Go Monarchs!`
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/1/1.4/escape%25this.html HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 67
< Last-Modified: Thu, 27 Sep 2018 17:58:49 GMT
< Etag: "d23695deea09abedde3aaf360277a782;6f8a2461f62b33791df461c72978478d"
< Content-Type: text/html
< Connection: close
< 
* [Payload redacted (67 bytes)]

--------------------------------------------------------------------------------
test_get_jpeg_image: Test whether a JPEG image returns 200 with proper Content-Length on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Length` header is present
* `Content-Length` header has value `38457`
* Payload size is `38457` bytes
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/2/0.jpeg HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 38457
< Last-Modified: Thu, 27 Sep 2018 17:58:51 GMT
< Etag: "a5ee39e4649fdd082e17b9c6a5758885;cac53816a77244a445a0a69a6addd8a6"
< Content-Type: image/jpeg
< Connection: close
< 
* [Payload redacted (38457 bytes)]

--------------------------------------------------------------------------------
test_get_case_sensitive_file_extension: Test whether file extensions are treated case-sensitive
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* HTTP version is `HTTP/1.1`
* Status is `404`
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/2/0.JPEG HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 404 Not Found
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: close
< 
* [Payload redacted (164 bytes)]

--------------------------------------------------------------------------------
test_get_empty_text_file: Test whether an empty file returns zero bytes with 200 on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/plain`
* `Content-Length` header is present
* `Content-Length` header has value `0`
* Payload is empty
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/4/thisfileisempty.txt HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Last-Modified: Thu, 27 Sep 2018 17:58:52 GMT
< Etag: "d41d8cd98f00b204e9800998ecf8427e;1daacbfbeaf85e057dc77edebbc86479"
< Content-Type: text/plain
< Connection: close

--------------------------------------------------------------------------------
test_get_empty_unknown_file_directory: Test whether an unknown empty file or directory returns zero bytes and a valid Content-Type with 200 on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `application/octet-stream`
* `Content-Length` header is present
* `Content-Length` header has value `0`
* Payload is empty
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/4/directory3isempty HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 0
< Last-Modified: Thu, 27 Sep 2018 17:58:52 GMT
< Etag: "d41d8cd98f00b204e9800998ecf8427e;6e52a4079d9eaabcc0cced5a7d280ceb"
< Content-Type: application/octet-stream
< Connection: close

--------------------------------------------------------------------------------
test_get_filename_with_many_dots: Test whether file names with multiple dots return 200 on GET
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/xml`
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/1/1.2/arXiv.org.Idenitfy.repsonse.xml HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 3142
< Last-Modified: Thu, 27 Sep 2018 17:58:48 GMT
< Etag: "60757ce40ecb43052efe0f5a329a3d0d;3d79e69b560fe37d85cb5f7fff502b45"
< Content-Type: text/xml
< Connection: close
< 
* [Payload redacted (3142 bytes)]

--------------------------------------------------------------------------------
test_get_magic_cookie_of_a_binary_file: Test whether a GIF file contains identifying magic cookie
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* Payload begins with `GIF89a`
[PASSED]

> GET http://cs531-cs_ptoma001/a1-test/2/6.gif HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 49803
< Last-Modified: Thu, 27 Sep 2018 17:58:51 GMT
< Etag: "f15d0e729fffe52ad0afc2320484c553;3cd8349770049b54409c53f950a615d6"
< Content-Type: image/gif
< Connection: close
< 
* [Payload redacted (49803 bytes)]

--------------------------------------------------------------------------------
test_access_log_as_virtual_uri: Test whether the access log is available as a Virtual URI in the Common Log Format
* Connecting to the `cs531-cs_ptoma001:80` server
* Request data sent
* Response data read
* Response parsed
* Status is `200`
* `Content-Type` header is present
* `Content-Type` header begins with `text/plain`
* Payload is not empty
* Selected log entry `172.18.0.2 - - [05/Dec/2022:19:53:33 +0000] "GET /a1-test/1/1.4/test:.html HTTP/ 1.1" 200 25`
* `172.18.0.2` is a valid IP address
* `172.18.0.2` is potentially the IP address of a client
* `05/Dec/2022:19:53:33 +0000` is formatted correctly
* `200` is a valid status code
* `25` is a valid size
[PASSED]

> GET /.well-known/access.log HTTP/1.1
> Host: cs531-cs_ptoma001
> Connection: close
> 

< HTTP/1.1 200 OK
< Date: Mon, 05 Dec 2022 19:53:33 GMT
< Server: Assignment2/Version/0.1
< Content-Length: 1671
< Last-Modified: Mon, 05 Dec 2022 19:53:33 GMT
< Etag: "d728e540f90a3a17963cb2ca07bf8fff;daaa5750e7e4fd50f1eef049aa5c85ca"
< Content-Type: text/plain
< Connection: close
< 
* [Payload redacted (1671 bytes)]

=================================== SUMMARY ====================================
Server: cs531-cs_ptoma001:80
Test Case Results:
PASSED: test_url_get_ok
PASSED: test_url_head_ok
PASSED: test_path_head_ok
PASSED: test_path_options_ok
PASSED: test_get_missing
PASSED: test_get_duplicate_path_prefix
PASSED: test_unsupported_version
PASSED: test_invalid_request
PASSED: test_missing_host_header
PASSED: test_post_not_implemented
PASSED: test_trace_echoback
PASSED: test_get_escaped_file_name
PASSED: test_get_escape_escaping_character
PASSED: test_get_jpeg_image
PASSED: test_get_case_sensitive_file_extension
PASSED: test_get_empty_text_file
PASSED: test_get_empty_unknown_file_directory
PASSED: test_get_filename_with_many_dots
PASSED: test_get_magic_cookie_of_a_binary_file
PASSED: test_access_log_as_virtual_uri
--------------------------------------------------------------------------------
TOTAL: 20, PASSED: 20, FAILED: 0
===============================================================================

Destroying server: cs531-cs_ptoma001
Server `cs531-cs_ptoma001` destroyed successfully.
ibnesayeed commented 1 year ago
* [PASSED]: cs531a1: test_url_get_ok
* [PASSED]: cs531a1: test_url_head_ok
* [PASSED]: cs531a1: test_path_head_ok
* [PASSED]: cs531a1: test_path_options_ok
* [PASSED]: cs531a1: test_get_missing
* [PASSED]: cs531a1: test_get_duplicate_path_prefix
* [PASSED]: cs531a1: test_unsupported_version
* [PASSED]: cs531a1: test_invalid_request
* [PASSED]: cs531a1: test_missing_host_header
* [PASSED]: cs531a1: test_post_not_implemented
* [PASSED]: cs531a1: test_trace_echoback
* [PASSED]: cs531a1: test_get_escaped_file_name
* [PASSED]: cs531a1: test_get_escape_escaping_character
* [PASSED]: cs531a1: test_get_jpeg_image
* [PASSED]: cs531a1: test_get_case_sensitive_file_extension
* [PASSED]: cs531a1: test_get_empty_text_file
* [PASSED]: cs531a1: test_get_empty_unknown_file_directory
* [PASSED]: cs531a1: test_get_filename_with_many_dots
* [PASSED]: cs531a1: test_get_magic_cookie_of_a_binary_file
* [PASSED]: cs531a1: test_access_log_as_virtual_uri

TOTAL: 20, PASSED: 20, FAILED: 0
* [PASSED]: cs531a2: test_get_directory_listing
* [PASSED]: cs531a2: test_redirect_to_trailing_slash_for_directory_url
* [PASSED]: cs531a2: test_redirect_to_trailing_slash_for_directory_path
* [PASSED]: cs531a2: test_get_default_index_file
* [PASSED]: cs531a2: test_redirect_as_per_regexp_trailing_wildcard_capture
* [PASSED]: cs531a2: test_redirect_as_per_regexp_trailing_specific_file
* [PASSED]: cs531a2: test_dont_redirect_target_file
* [PASSED]: cs531a2: test_conditional_head_fresh
* [PASSED]: cs531a2: test_conditional_head_stale
* [PASSED]: cs531a2: test_conditional_head_invalid_datetime
* [PASSED]: cs531a2: test_conditional_head_unsupported_datetime_format
* [PASSED]: cs531a2: test_include_etag
* [PASSED]: cs531a2: test_valid_etag_ok
* [PASSED]: cs531a2: test_etag_if_match_failure
* [PASSED]: cs531a2: test_implicit_keep_alive_until_timeout
* [PASSED]: cs531a2: test_explicit_keep_alive_until_timeout
* [PASSED]: cs531a2: test_trace_unnecessary_conditionals
* [FAILED]: cs531a2: test_pipeline_requests
* [FAILED]: cs531a2: test_long_lived_connection

TOTAL: 19, PASSED: 17, FAILED: 2
* [PASSED]: cs531a3: test_useragent_get_text_ok
* [FAILED]: cs531a3: test_partial_content_range_language
* [PASSED]: cs531a3: test_chunked_404
* [PASSED]: cs531a3: test_conditional_head_image_fresh
* [PASSED]: cs531a3: test_conditional_head_image_stale
* [PASSED]: cs531a3: test_no_accept_header_multiple_choices
* [PASSED]: cs531a3: test_ambiguous_accept_header_multiple_choices
* [PASSED]: cs531a3: test_accept_header_png_ok
* [FAILED]: cs531a3: test_accept_header_text_ok
* [PASSED]: cs531a3: test_not_accptable_encoding
* [PASSED]: cs531a3: test_explicit_extention_ignore_content_negotiation
* [FAILED]: cs531a3: test_ambiguous_accept_language_multiple_choices
* [PASSED]: cs531a3: test_not_accptable_incompatiple_charset
* [FAILED]: cs531a3: test_partial_content_range_text
* [PASSED]: cs531a3: test_etag_precondition_failure
* [PASSED]: cs531a3: test_explicit_language_charset_etag
* [PASSED]: cs531a3: test_valid_etag_conditional_get
* [FAILED]: cs531a3: test_pipeline_range_negotiate

TOTAL: 18, PASSED: 13, FAILED: 5
* [PASSED]: cs531a4: test_basic_auth_realm
* [PASSED]: cs531a4: test_basic_wrong_auth_unauthorized
* [PASSED]: cs531a4: test_nested_basic_auth
* [PASSED]: cs531a4: test_basic_auth_ok
* [PASSED]: cs531a4: test_nested_basic_auth_ok
* [PASSED]: cs531a4: test_double_auth_bad
* [PASSED]: cs531a4: test_nested_digest_auth
* [PASSED]: cs531a4: test_head_nested_digest_auth
* [PASSED]: cs531a4: test_options_nested_digest_auth
* [PASSED]: cs531a4: test_wrong_realm_unauthorized
* [PASSED]: cs531a4: test_wrong_ncount_unauthorized
* [PASSED]: cs531a4: test_wrong_digest_response_unauthorized
* [PASSED]: cs531a4: test_wrong_digest_user_unauthorized
* [PASSED]: cs531a4: test_correct_realm_authorized
* [PASSED]: cs531a4: test_auth_over_conditional_get
* [PASSED]: cs531a4: test_large_range_not_satisfiable
* [PASSED]: cs531a4: test_pipeline_auth

TOTAL: 17, PASSED: 17, FAILED: 0