Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat:add br support #600

Merged
merged 8 commits into from
Jun 24, 2024
Merged

Conversation

helintongh
Copy link
Collaborator

add br compression support.

server code:

int main()
{
  coro_http_server server(1, 9001);

  server.set_http_handler<GET, POST>(
      "/get", [](coro_http_request &req, coro_http_response &resp) {
        auto encoding_type = req.get_encoding_type();

        if (encoding_type == content_encoding::br) {
          std::string decode_str;
          bool r = br_codec::brotli_decompress(req.get_body(), decode_str);
          std::cout << decode_str << std::endl;
        }
        resp.set_status_and_content(status_type::ok, "ok", content_encoding::br,
                                    req.get_accept_encoding());
      });

  server.sync_start();
}

python client test code:

import requests
import brotli

additional_headers= {
    'Content-Encoding': 'br'
}
request_body = brotli.compress("Hello world".encode('utf-8'))
r = requests.post('http://192.168.16.2:9001/get', request_body, headers=additional_headers)

print(r.content)

Test pass.

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                                      Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                               4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                           15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                                 83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                             36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                                31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                               31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                                 15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                                 50                 5    90.00%         947               122    87.12%         178                47    73.60%
coro_radix_tree.hpp                                  17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                              2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                                      29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                       8                 4    50.00%          96                80    16.67%          32                28    12.50%
mime_types.hpp                                        1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                         4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                                     14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                       2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                          11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                                  10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                             12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                                     2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                        20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                              17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                                 4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                            13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                        15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                              15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                          21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                            22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                              52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp                  10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp                      38                 6    84.21%         216                29    86.57%          28                 8    71.43%
ylt/metric/counter.hpp                               18                18     0.00%         192               192     0.00%           2                 2     0.00%
ylt/metric/detail/ckms_quantiles.hpp                  9                 9     0.00%         127               127     0.00%           0                 0         -
ylt/metric/detail/time_window_quantiles.hpp           4                 4     0.00%          25                25     0.00%           0                 0         -
ylt/metric/gauge.hpp                                  5                 5     0.00%          31                31     0.00%           0                 0         -
ylt/metric/histogram.hpp                              5                 5     0.00%          55                55     0.00%           0                 0         -
ylt/metric/metric.hpp                                25                25     0.00%         128               128     0.00%           8                 8     0.00%
ylt/metric/summary.hpp                               10                10     0.00%          98                98     0.00%           0                 0         -
ylt/util/concurrentqueue.h                           79                28    64.56%        1568              1049    33.10%         290               198    31.72%
ylt/util/expected.hpp                                 6                 4    33.33%           6                 4    33.33%           0                 0         -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                               765               189    75.29%        9432              3352    64.46%        2478               904    63.52%

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                                      Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                               4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                           15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                                 83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                             36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                                31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                               31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                                 15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                                 50                 5    90.00%         947               125    86.80%         178                48    73.03%
coro_radix_tree.hpp                                  17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                              2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                                      29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                       8                 4    50.00%          96                80    16.67%          32                28    12.50%
mime_types.hpp                                        1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                         4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                                     14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                       2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                          11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                                  10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                             12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                                     2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                        20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                              17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                                 4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                            13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                        15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                              15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                          21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                            22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                              52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp                  10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp                      38                 6    84.21%         216                29    86.57%          28                 8    71.43%
ylt/metric/counter.hpp                               18                18     0.00%         192               192     0.00%           2                 2     0.00%
ylt/metric/detail/ckms_quantiles.hpp                  9                 9     0.00%         127               127     0.00%           0                 0         -
ylt/metric/detail/time_window_quantiles.hpp           4                 4     0.00%          25                25     0.00%           0                 0         -
ylt/metric/gauge.hpp                                  5                 5     0.00%          31                31     0.00%           0                 0         -
ylt/metric/histogram.hpp                              5                 5     0.00%          55                55     0.00%           0                 0         -
ylt/metric/metric.hpp                                25                25     0.00%         128               128     0.00%           8                 8     0.00%
ylt/metric/summary.hpp                               10                10     0.00%          98                98     0.00%           0                 0         -
ylt/util/concurrentqueue.h                           79                28    64.56%        1568              1049    33.10%         290               198    31.72%
ylt/util/expected.hpp                                 6                 4    33.33%           6                 4    33.33%           0                 0         -
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                               765               189    75.29%        9432              3355    64.43%        2478               905    63.48%

@codecov-commenter
Copy link

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 65.28%. Comparing base (5745cbb) to head (c18c875).
Report is 17 commits behind head on master.

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #600      +/-   ##
==========================================
- Coverage   70.45%   65.28%   -5.17%     
==========================================
  Files         233      222      -11     
  Lines       13882    13921      +39     
==========================================
- Hits         9780     9089     -691     
- Misses       4102     4832     +730     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

include/cinatra/coro_http_client.hpp Outdated Show resolved Hide resolved
include/cinatra/coro_http_client.hpp Outdated Show resolved Hide resolved
include/cinatra/coro_http_client.hpp Show resolved Hide resolved
tests/test_cinatra.cpp Outdated Show resolved Hide resolved
include/cinatra/coro_http_response.hpp Show resolved Hide resolved
@helintongh helintongh requested a review from qicosmos June 20, 2024 08:43
Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         957               135    85.89%         178                48    73.03%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         2                 1    50.00%          10                 3    70.00%           2                 0   100.00%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         14                 8    42.86%          56                31    44.64%           8                 5    37.50%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        710               123    82.68%        8667              2534    70.76%        2482               902    63.66%

@helintongh
Copy link
Collaborator Author

已经完成所有review修改

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               198    84.53%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         957               132    86.21%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         2                 1    50.00%          10                 3    70.00%           2                 0   100.00%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         14                 8    42.86%          56                31    44.64%           8                 5    37.50%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        710               123    82.68%        8667              2531    70.80%        2482               901    63.70%

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2567    70.84%        2520               904    64.13%

@qicosmos
Copy link
Owner

resp_data结构体中增加的std::string br_data;字段还没删掉。

下面的代码也还有问题:

#ifdef CINATRA_ENABLE_GZIP
      if (encoding_type_ == content_encoding::gzip) {
        std::string unziped_str;
        bool r = gzip_codec::uncompress(reply, unziped_str);
        if (r)
          data.resp_body = unziped_str;
        else
          data.resp_body = reply;
      }
      else if (encoding_type_ == content_encoding::deflate) {
        std::string inflate_str;
        bool r = gzip_codec::inflate(reply, inflate_str);
        if (r)
          data.resp_body = inflate_str;
        else
          data.resp_body = reply;
      }
#endif

其中std::string unziped_str;std::string inflate_str;都是临时变量返回出去了,需要和br一样定义为成员变量才行。resp_body是string_view,它不管赋值字符串的生命周期的,需要client去管。

@helintongh
Copy link
Collaborator Author

helintongh commented Jun 24, 2024

已经修复,最新代码使用单一变量uncompressed_str_作为解压缩后的字符。

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                67    23.86%          32                26    18.75%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                70    59.30%          28                 2    92.86%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2562    70.90%        2520               902    64.21%

Copy link
Owner

@qicosmos qicosmos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link

Code Coverage Report
for detail, goto summary download Artifacts

Filename                               Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cinatra_log_wrapper.hpp                        4                 1    75.00%           9                 1    88.89%           0                 0         -
cookie.hpp                                    15                 2    86.67%          84                 2    97.62%          28                 3    89.29%
coro_http_client.hpp                          83                 5    93.98%        1280               203    84.14%         410               114    72.20%
coro_http_connection.hpp                      36                 2    94.44%         667               208    68.82%         202                71    64.85%
coro_http_request.hpp                         31                 7    77.42%         218                41    81.19%          74                10    86.49%
coro_http_response.hpp                        31                 6    80.65%         226                68    69.91%          90                36    60.00%
coro_http_router.hpp                          15                 0   100.00%         181                32    82.32%          20                 8    60.00%
coro_http_server.hpp                          50                 5    90.00%         962               137    85.76%         178                47    73.60%
coro_radix_tree.hpp                           17                 0   100.00%         264                38    85.61%         136                30    77.94%
define.h                                       2                 0   100.00%          28                 2    92.86%          20                 1    95.00%
http_parser.hpp                               29                 5    82.76%         201                32    84.08%          56                12    78.57%
metric_conf.hpp                                8                 4    50.00%          88                72    18.18%          32                28    12.50%
mime_types.hpp                                 1                 0   100.00%           7                 2    71.43%           2                 1    50.00%
multipart.hpp                                  4                 0   100.00%          89                15    83.15%          22                 5    77.27%
picohttpparser.h                              14                 6    57.14%         467               278    40.47%         212               103    51.42%
response_cv.hpp                                2                 0   100.00%          55                32    41.82%          46                16    65.22%
session.hpp                                   11                 0   100.00%          54                 2    96.30%           4                 1    75.00%
session_manager.hpp                           10                 1    90.00%          67                 5    92.54%          10                 1    90.00%
sha1.hpp                                      12                 0   100.00%         181                 8    95.58%          12                 2    83.33%
string_resize.hpp                              2                 0   100.00%          18                 0   100.00%           2                 0   100.00%
time_util.hpp                                 20                 7    65.00%         172                72    58.14%          28                 3    89.29%
uri.hpp                                       17                 5    70.59%         200                62    69.00%         166                52    68.67%
url_encode_decode.hpp                          4                 0   100.00%          85                20    76.47%          48                16    66.67%
utils.hpp                                     13                 0   100.00%         201                22    89.05%         116                43    62.93%
websocket.hpp                                 15                 4    73.33%         170                43    74.71%          70                18    74.29%
ylt/coro_io/channel.hpp                       15                 0   100.00%         106                 7    93.40%          30                 5    83.33%
ylt/coro_io/client_pool.hpp                   21                 3    85.71%         324               125    61.42%          62                38    38.71%
ylt/coro_io/coro_file.hpp                     22                 1    95.45%         213                38    82.16%          56                19    66.07%
ylt/coro_io/coro_io.hpp                       52                 6    88.46%         329                38    88.45%           8                 2    75.00%
ylt/coro_io/detail/client_queue.hpp           10                 5    50.00%          47                23    51.06%          10                 4    60.00%
ylt/coro_io/io_context_pool.hpp               40                 6    85.00%         227                29    87.22%          28                 8    71.43%
ylt/metric/counter.hpp                         9                 1    88.89%          83                 3    96.39%          24                 1    95.83%
ylt/metric/detail/ckms_quantiles.hpp           1                 1     0.00%           5                 5     0.00%           0                 0         -
ylt/metric/gauge.hpp                           1                 0   100.00%           4                 0   100.00%           0                 0         -
ylt/metric/histogram.hpp                       1                 0   100.00%          11                 2    81.82%           4                 2    50.00%
ylt/metric/metric.hpp                         23                12    47.83%         114                57    50.00%          24                 7    70.83%
ylt/metric/summary.hpp                         1                 1     0.00%           1                 1     0.00%           0                 0         -
ylt/util/concurrentqueue.h                    78                27    65.38%        1359               840    38.19%         290               198    31.72%
ylt/util/expected.hpp                          6                 4    33.33%           6                 4    33.33%           0                 0         -
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                        726               127    82.51%        8803              2569    70.82%        2520               905    64.09%

@helintongh helintongh merged commit 929936e into qicosmos:master Jun 24, 2024
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants