Repository: qiniu/goc
Pull request #120 (2020-09-23 06:16:22)

Support configuring the persistence file path
support #108 

qiniu-bot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/qiniu/goc/pull/120#" title="Author self-approved">tongjingran</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **lyyyuna**
You can assign the PR to them by writing `/assign @lyyyuna` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=qiniu%2Fgoc).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/qiniu/goc/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["lyyyuna"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `10.95%`.
> The diff coverage is `69.56%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   68.53%   -10.96%     
===========================================
  Files          34       33        -1     
  Lines        1589     1592        +3     
===========================================
- Hits         1263     1091      -172     
- Misses        204      393      +189     
+ Partials      122      108       -14     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `7.69% <0.00%> (-56.31%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.30%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| [cmd/clear.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NsZWFyLmdv) | `33.33% <0.00%> (-50.01%)` | :arrow_down: |
| [cmd/list.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2xpc3QuZ28=) | `25.00% <0.00%> (-50.00%)` | :arrow_down: |
| ... and [17 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `10.82%`.
> The diff coverage is `69.56%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   68.65%   -10.83%     
===========================================
  Files          34       33        -1     
  Lines        1589     1592        +3     
===========================================
- Hits         1263     1093      -170     
- Misses        204      392      +188     
+ Partials      122      107       -15     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `7.69% <0.00%> (-56.31%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.30%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| [cmd/clear.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NsZWFyLmdv) | `33.33% <0.00%> (-50.01%)` | :arrow_down: |
| [cmd/list.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2xpc3QuZ28=) | `25.00% <0.00%> (-50.00%)` | :arrow_down: |
| ... and [17 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `10.82%`.
> The diff coverage is `69.56%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   68.65%   -10.83%     
===========================================
  Files          34       33        -1     
  Lines        1589     1592        +3     
===========================================
- Hits         1263     1093      -170     
- Misses        204      392      +188     
+ Partials      122      107       -15     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `7.69% <0.00%> (-56.31%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.30%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| [cmd/clear.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NsZWFyLmdv) | `33.33% <0.00%> (-50.01%)` | :arrow_down: |
| [cmd/list.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2xpc3QuZ28=) | `25.00% <0.00%> (-50.00%)` | :arrow_down: |
| ... and [17 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.07%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.40%   -1.08%     
==========================================
  Files          34       34              
  Lines        1589     1593       +4     
==========================================
- Hits         1263     1249      -14     
- Misses        204      223      +19     
+ Partials      122      121       -1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #e2e-1.15.x | `43.87% <86.95%> (?)` | |
| #unittest-1.13.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `65.38% <100.00%> (+1.38%)` | :arrow_up: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.07%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.40%   -1.08%     
==========================================
  Files          34       34              
  Lines        1589     1593       +4     
==========================================
- Hits         1263     1249      -14     
- Misses        204      223      +19     
+ Partials      122      121       -1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.13.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.14.x | `43.87% <86.95%> (-0.87%)` | :arrow_down: |
| #e2e-1.15.x | `43.87% <86.95%> (?)` | |
| #unittest-1.13.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `65.38% <100.00%> (+1.38%)` | :arrow_up: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.07%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.40%   -1.08%     
==========================================
  Files          34       34              
  Lines        1589     1593       +4     
==========================================
- Hits         1263     1249      -14     
- Misses        204      223      +19     
+ Partials      122      121       -1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.87% <86.95%> (-0.74%)` | :arrow_down: |
| #e2e-1.12.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.13.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.14.x | `43.87% <86.95%> (-0.87%)` | :arrow_down: |
| #e2e-1.15.x | `43.87% <86.95%> (?)` | |
| #unittest-1.13.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `65.38% <100.00%> (+1.38%)` | :arrow_up: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.07%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.40%   -1.08%     
==========================================
  Files          34       34              
  Lines        1589     1593       +4     
==========================================
- Hits         1263     1249      -14     
- Misses        204      223      +19     
+ Partials      122      121       -1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.87% <86.95%> (-0.74%)` | :arrow_down: |
| #e2e-1.12.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.13.x | `43.62% <86.95%> (-1.00%)` | :arrow_down: |
| #e2e-1.14.x | `43.87% <86.95%> (-0.87%)` | :arrow_down: |
| #e2e-1.15.x | `43.87% <86.95%> (?)` | |
| #unittest-1.13.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.14.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |
| #unittest-1.15.x | `68.53% <69.56%> (-0.11%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `65.38% <100.00%> (+1.38%)` | :arrow_up: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `58.22% <100.00%> (-19.70%)` | :arrow_down: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.67% <75.00%> (-0.94%)` | :arrow_down: |
| #e2e-1.12.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.13.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.67% <75.00%> (-0.94%)` | :arrow_down: |
| #e2e-1.12.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.13.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.13.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.80% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.13.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.80% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `35.67%`.
> The diff coverage is `75.00%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   43.80%   -35.68%     
===========================================
  Files          34       34               
  Lines        1589     1598        +9     
===========================================
- Hits         1263      700      -563     
- Misses        204      764      +560     
- Partials      122      134       +12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.12.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.13.x | `43.80% <75.00%> (-0.82%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <75.00%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.80% <75.00%> (?)` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `53.08% <60.00%> (-24.84%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `41.48% <76.92%> (-47.57%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/qiniu/mock.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L21vY2suZ28=) | `0.00% <0.00%> (-100.00%)` | :arrow_down: |
| [pkg/qiniu/object.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L29iamVjdC5nbw==) | `0.00% <0.00%> (-92.69%)` | :arrow_down: |
| [pkg/qiniu/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L2NsaWVudC5nbw==) | `0.00% <0.00%> (-80.90%)` | :arrow_down: |
| [pkg/prow/job.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Byb3cvam9iLmdv) | `0.00% <0.00%> (-74.72%)` | :arrow_down: |
| [pkg/github/github.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2dpdGh1Yi9naXRodWIuZ28=) | `0.00% <0.00%> (-74.03%)` | :arrow_down: |
| [pkg/qiniu/qnPresubmit.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL3Fpbml1L3FuUHJlc3VibWl0Lmdv) | `0.00% <0.00%> (-60.00%)` | :arrow_down: |
| ... and [12 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `11.16%`.
> The diff coverage is `57.14%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   68.31%   -11.17%     
===========================================
  Files          34       33        -1     
  Lines        1589     1597        +8     
===========================================
- Hits         1263     1091      -172     
- Misses        204      398      +194     
+ Partials      122      108       -14     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `56.79% <60.00%> (-21.14%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.30%> (-3.87%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| [cmd/clear.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NsZWFyLmdv) | `33.33% <0.00%> (-50.01%)` | :arrow_down: |
| [cmd/list.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2xpc3QuZ28=) | `25.00% <0.00%> (-50.00%)` | :arrow_down: |
| ... and [18 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `11.04%`.
> The diff coverage is `57.14%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   68.44%   -11.05%     
===========================================
  Files          34       33        -1     
  Lines        1589     1597        +8     
===========================================
- Hits         1263     1093      -170     
- Misses        204      396      +192     
+ Partials      122      108       -14     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.14.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.15.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `56.79% <60.00%> (-21.14%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.30%> (-3.87%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| [cmd/clear.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NsZWFyLmdv) | `33.33% <0.00%> (-50.01%)` | :arrow_down: |
| [cmd/list.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2xpc3QuZ28=) | `25.00% <0.00%> (-50.00%)` | :arrow_down: |
| ... and [17 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.13%`.
> The diff coverage is `85.71%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.34%   -1.14%     
==========================================
  Files          34       34              
  Lines        1589     1598       +9     
==========================================
- Hits         1263     1252      -11     
- Misses        204      223      +19     
- Partials      122      123       +1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `43.67% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.14.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.15.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `56.79% <60.00%> (-21.14%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.13%`.
> The diff coverage is `85.71%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.34%   -1.14%     
==========================================
  Files          34       34              
  Lines        1589     1598       +9     
==========================================
- Hits         1263     1252      -11     
- Misses        204      223      +19     
- Partials      122      123       +1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.67% <75.00%> (-0.94%)` | :arrow_down: |
| #e2e-1.12.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.13.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.14.x | `43.67% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.14.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.15.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `56.79% <60.00%> (-21.14%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `1.13%`.
> The diff coverage is `85.71%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   78.34%   -1.14%     
==========================================
  Files          34       34              
  Lines        1589     1598       +9     
==========================================
- Hits         1263     1252      -11     
- Misses        204      223      +19     
- Partials      122      123       +1     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.67% <75.00%> (-0.94%)` | :arrow_down: |
| #e2e-1.12.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.13.x | `43.55% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.14.x | `43.67% <75.00%> (-1.07%)` | :arrow_down: |
| #e2e-1.15.x | `43.67% <75.00%> (?)` | |
| #unittest-1.13.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.14.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |
| #unittest-1.15.x | `68.31% <57.14%> (-0.33%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `56.79% <60.00%> (-21.14%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.87%`.
> The diff coverage is `64.51%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   69.61%   -9.88%     
==========================================
  Files          34       33       -1     
  Lines        1589     1596       +7     
==========================================
- Hits         1263     1111     -152     
- Misses        204      378     +174     
+ Partials      122      107      -15     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.87%`.
> The diff coverage is `64.51%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   69.61%   -9.88%     
==========================================
  Files          34       33       -1     
  Lines        1589     1596       +7     
==========================================
- Hits         1263     1111     -152     
- Misses        204      378     +174     
+ Partials      122      107      -15     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.87%`.
> The diff coverage is `64.51%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   69.61%   -9.88%     
==========================================
  Files          34       33       -1     
  Lines        1589     1596       +7     
==========================================
- Hits         1263     1111     -152     
- Misses        204      378     +174     
+ Partials      122      107      -15     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `0.08%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   79.39%   -0.09%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1268       +5     
- Misses        204      207       +3     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #e2e-1.15.x | `43.51% <74.19%> (?)` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |
| [pkg/build/gomodules.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2dvbW9kdWxlcy5nbw==) | `93.54% <0.00%> (-6.46%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `43.76% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.15.x | `43.51% <74.19%> (?)` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.64% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `43.76% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.15.x | `43.51% <74.19%> (?)` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.12.x | `43.64% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `43.76% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.15.x | `43.51% <74.19%> (?)` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.12.x | `43.64% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `43.76% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.15.x | `43.51% <74.19%> (?)` | |
| #unittest-1.13.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `69.61% <64.51%> (+0.97%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.99%`.
> The diff coverage is `64.51%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   69.48%   -10.00%     
===========================================
  Files          34       33        -1     
  Lines        1589     1596        +7     
===========================================
- Hits         1263     1109      -154     
- Misses        204      379      +175     
+ Partials      122      108       -14     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `?` | |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.99%`.
> The diff coverage is `64.51%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   69.48%   -10.00%     
===========================================
  Files          34       33        -1     
  Lines        1589     1596        +7     
===========================================
- Hits         1263     1109      -154     
- Misses        204      379      +175     
+ Partials      122      108       -14     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `93.54%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.52%   +0.04%     
==========================================
  Files          34       34              
  Lines        1589     1597       +8     
==========================================
+ Hits         1263     1270       +7     
- Misses        204      205       +1     
  Partials      122      122              
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.64% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.12.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.13.x | `43.76% <74.19%> (-0.85%)` | :arrow_down: |
| #e2e-1.14.x | `43.76% <74.19%> (-0.98%)` | :arrow_down: |
| #e2e-1.15.x | `43.64% <74.19%> (?)` | |
| #unittest-1.13.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.14.x | `69.48% <64.51%> (+0.84%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `82.50% <100.00%> (+4.57%)` | :arrow_up: |
| [pkg/build/legacy.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL2xlZ2FjeS5nbw==) | `92.85% <0.00%> (-7.15%)` | :arrow_down: |

tongjingran: /assign @lyyyuna 
/assign @CarlJi 
qiniu-bot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/qiniu/goc/pull/120#" title="Author self-approved">tongjingran</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **carlji**
You can assign the PR to them by writing `/assign @carlji` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=qiniu%2Fgoc).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/qiniu/goc/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["carlji"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.92%`.
> The diff coverage is `57.14%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   69.56%   -9.93%     
==========================================
  Files          34       33       -1     
  Lines        1589     1600      +11     
==========================================
- Hits         1263     1113     -150     
- Misses        204      377     +173     
+ Partials      122      110      -12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.56% <57.14%> (+0.92%)` | :arrow_up: |
| #unittest-1.14.x | `69.43% <57.14%> (+0.79%)` | :arrow_up: |
| #unittest-1.15.x | `?` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [18 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `9.92%`.
> The diff coverage is `57.14%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   69.56%   -9.93%     
==========================================
  Files          34       33       -1     
  Lines        1589     1600      +11     
==========================================
- Hits         1263     1113     -150     
- Misses        204      377     +173     
+ Partials      122      110      -12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.56% <57.14%> (+0.92%)` | :arrow_up: |
| #unittest-1.14.x | `69.43% <57.14%> (+0.79%)` | :arrow_up: |
| #unittest-1.15.x | `69.31% <57.14%> (+0.67%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `6.89% <0.00%> (-57.11%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `37.50% <25.00%> (-62.50%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `85.18% <92.85%> (-3.87%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [18 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `0.03%`.
> The diff coverage is `82.85%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   79.45%   -0.04%     
==========================================
  Files          34       34              
  Lines        1589     1601      +12     
==========================================
+ Hits         1263     1272       +9     
- Misses        204      205       +1     
- Partials      122      124       +2     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `43.66% <65.71%> (-1.09%)` | :arrow_down: |
| #unittest-1.13.x | `69.56% <57.14%> (+0.92%)` | :arrow_up: |
| #unittest-1.14.x | `69.43% <57.14%> (+0.79%)` | :arrow_up: |
| #unittest-1.15.x | `69.31% <57.14%> (+0.67%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `0.03%`.
> The diff coverage is `82.85%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   79.45%   -0.04%     
==========================================
  Files          34       34              
  Lines        1589     1601      +12     
==========================================
+ Hits         1263     1272       +9     
- Misses        204      205       +1     
- Partials      122      124       +2     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.12.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.13.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.14.x | `43.66% <65.71%> (-1.09%)` | :arrow_down: |
| #e2e-1.15.x | `43.53% <65.71%> (?)` | |
| #unittest-1.13.x | `69.56% <57.14%> (+0.92%)` | :arrow_up: |
| #unittest-1.14.x | `69.43% <57.14%> (+0.79%)` | :arrow_up: |
| #unittest-1.15.x | `69.31% <57.14%> (+0.67%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `0.03%`.
> The diff coverage is `82.85%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
- Coverage   79.48%   79.45%   -0.04%     
==========================================
  Files          34       34              
  Lines        1589     1601      +12     
==========================================
+ Hits         1263     1272       +9     
- Misses        204      205       +1     
- Partials      122      124       +2     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.12.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.13.x | `43.66% <65.71%> (-0.96%)` | :arrow_down: |
| #e2e-1.14.x | `43.66% <65.71%> (-1.09%)` | :arrow_down: |
| #e2e-1.15.x | `43.53% <65.71%> (?)` | |
| #unittest-1.13.x | `69.56% <57.14%> (+0.92%)` | :arrow_up: |
| #unittest-1.14.x | `69.43% <57.14%> (+0.79%)` | :arrow_up: |
| #unittest-1.15.x | `69.31% <57.14%> (+0.67%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `62.06% <66.66%> (-1.94%)` | :arrow_down: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `88.88% <100.00%> (-0.17%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **decrease** coverage by `10.03%`.
> The diff coverage is `53.84%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master     #120       +/-   ##
===========================================
- Coverage   79.48%   69.45%   -10.04%     
===========================================
  Files          34       33        -1     
  Lines        1589     1604       +15     
===========================================
- Hits         1263     1114      -149     
- Misses        204      380      +176     
+ Partials      122      110       -12     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `?` | |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #unittest-1.13.x | `69.20% <53.84%> (+0.56%)` | :arrow_up: |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `69.45% <53.84%> (+0.81%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `42.85% <0.00%> (-42.86%)` | :arrow_down: |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `7.14% <0.00%> (-56.86%)` | :arrow_down: |
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `42.85% <33.33%> (-57.15%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `82.26% <70.00%> (-6.79%)` | :arrow_down: |
| [pkg/build/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2J1aWxkL3J1bi5nbw==) | `0.00% <0.00%> (-69.24%)` | :arrow_down: |
| [cmd/root.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3Jvb3QuZ28=) | `12.50% <0.00%> (-65.63%)` | :arrow_down: |
| [cmd/cover.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL2NvdmVyLmdv) | `37.50% <0.00%> (-62.50%)` | :arrow_down: |
| [cmd/version.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3ZlcnNpb24uZ28=) | `14.28% <0.00%> (-57.15%)` | :arrow_down: |
| ... and [18 more](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree-more) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `84.61%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.50%   +0.01%     
==========================================
  Files          34       34              
  Lines        1589     1605      +16     
==========================================
+ Hits         1263     1276      +13     
- Misses        204      205       +1     
- Partials      122      124       +2     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `?` | |
| #e2e-1.12.x | `43.80% <69.23%> (-0.82%)` | :arrow_down: |
| #e2e-1.13.x | `?` | |
| #e2e-1.14.x | `?` | |
| #e2e-1.15.x | `43.80% <69.23%> (?)` | |
| #unittest-1.13.x | `69.20% <53.84%> (+0.56%)` | :arrow_up: |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `69.45% <53.84%> (+0.81%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `60.71% <60.00%> (-3.29%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `89.36% <100.00%> (+0.31%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=h1) Report
> Merging [#120](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=desc) into [master](https://codecov.io/gh/qiniu/goc/commit/c0035e117666144a5835dd38ab49ede2ddd1a78a?el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `84.61%`.

[![Impacted file tree graph](https://codecov.io/gh/qiniu/goc/pull/120/graphs/tree.svg?width=650&height=150&src=pr&token=7AHPDDLXQ3)](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #120      +/-   ##
==========================================
+ Coverage   79.48%   79.50%   +0.01%     
==========================================
  Files          34       34              
  Lines        1589     1605      +16     
==========================================
+ Hits         1263     1276      +13     
- Misses        204      205       +1     
- Partials      122      124       +2     
```

| Flag | Coverage Δ | |
|---|---|---|
| #e2e-1.11.x | `43.67% <69.23%> (-0.95%)` | :arrow_down: |
| #e2e-1.12.x | `43.80% <69.23%> (-0.82%)` | :arrow_down: |
| #e2e-1.13.x | `43.55% <69.23%> (-1.07%)` | :arrow_down: |
| #e2e-1.14.x | `43.80% <69.23%> (-0.95%)` | :arrow_down: |
| #e2e-1.15.x | `43.80% <69.23%> (?)` | |
| #unittest-1.13.x | `69.20% <53.84%> (+0.56%)` | :arrow_up: |
| #unittest-1.14.x | `?` | |
| #unittest-1.15.x | `69.45% <53.84%> (+0.81%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/qiniu/goc/pull/120?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/cover/client.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL2NsaWVudC5nbw==) | `89.28% <ø> (ø)` | |
| [cmd/run.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3J1bi5nbw==) | `60.71% <60.00%> (-3.29%)` | :arrow_down: |
| [pkg/cover/store.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3N0b3JlLmdv) | `78.57% <60.00%> (+0.64%)` | :arrow_up: |
| [cmd/register.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3JlZ2lzdGVyLmdv) | `85.71% <100.00%> (ø)` | |
| [cmd/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-Y21kL3NlcnZlci5nbw==) | `100.00% <100.00%> (ø)` | |
| [pkg/cover/server.go](https://codecov.io/gh/qiniu/goc/pull/120/diff?src=pr&el=tree#diff-cGtnL2NvdmVyL3NlcnZlci5nbw==) | `89.36% <100.00%> (+0.31%)` | :arrow_up: |


Patch:
diff --git a/cmd/register.go b/cmd/register.go
index 6b179f0..ab0518b 100644
--- a/cmd/register.go
+++ b/cmd/register.go
@@ -33,7 +33,7 @@ var registerCmd = &cobra.Command{
 goc register [flags] 
 `,
 	Run: func(cmd *cobra.Command, args []string) {
-		s := cover.Service{
+		s := cover.ServiceUnderTest{
 			Name:    name,
 			Address: address,
 		}
diff --git a/cmd/run.go b/cmd/run.go
index bf0bdeb..628293e 100644
--- a/cmd/run.go
+++ b/cmd/run.go
@@ -50,12 +50,16 @@ goc run . [--buildflags] [--exec] [--arguments]
 		gocBuild.GoRunArguments = goRunArguments
 		defer gocBuild.Clean()
 
-		// only save services in memory
-		cover.DefaultStore = cover.NewMemoryStore()
+		server := cover.NewMemoryBasedServer() // only save services in memory
 
 		// start goc server
 		var l = newLocalListener()
-		go cover.GocServer(ioutil.Discard).RunListener(l)
+		go func() {
+			err = server.Route(ioutil.Discard).RunListener(l)
+			if err != nil {
+				log.Fatalf("Start goc server failed: %v", err)
+			}
+		}()
 		gocServer := fmt.Sprintf("http://%s", l.Addr().String())
 		fmt.Printf("[goc] goc server started: %s \n", gocServer)
 
diff --git a/cmd/server.go b/cmd/server.go
index f37db9c..36d5b5e 100644
--- a/cmd/server.go
+++ b/cmd/server.go
@@ -19,6 +19,7 @@ package cmd
 import (
 	"github.com/qiniu/goc/pkg/cover"
 	"github.com/spf13/cobra"
+	"log"
 )
 
 var serverCmd = &cobra.Command{
@@ -36,13 +37,18 @@ goc server --port=:8080
 goc server --port=localhost:8080
 `,
 	Run: func(cmd *cobra.Command, args []string) {
-		cover.Run(port)
+		server, err := cover.NewFileBasedServer(localPersistence)
+		if err != nil {
+			log.Fatalf("New file based server failed, err: %v", err)
+		}
+		server.Run(port)
 	},
 }
 
-var port string
+var port, localPersistence string
 
 func init() {
 	serverCmd.Flags().StringVarP(&port, "port", "", ":7777", "listen port to start a coverage host center")
+	serverCmd.Flags().StringVarP(&localPersistence, "local-persistence", "", "_svrs_address.txt", "the file to save services address information")
 	rootCmd.AddCommand(serverCmd)
 }
diff --git a/go.mod b/go.mod
index a4b18ff..7135ab5 100644
--- a/go.mod
+++ b/go.mod
@@ -20,6 +20,6 @@ require (
 	golang.org/x/net v0.0.0-20200625001655-4c5254603344
 	golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
 	golang.org/x/tools v0.0.0-20200730221956-1ac65761fe2c
-	k8s.io/kubernetes v1.13.0
+	k8s.io/kubernetes v1.13.0 // indirect
 	k8s.io/test-infra v0.0.0-20200511080351-8ac9dbfab055
 )
diff --git a/go.sum b/go.sum
index 9881f5d..63fe015 100644
--- a/go.sum
+++ b/go.sum
@@ -464,6 +464,7 @@ github.com/klauspost/pgzip v1.2.1/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQ
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
 github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
+github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
diff --git a/pkg/cover/client.go b/pkg/cover/client.go
index c45166f..55f2c08 100644
--- a/pkg/cover/client.go
+++ b/pkg/cover/client.go
@@ -36,7 +36,7 @@ type Action interface {
 	Clear(param ProfileParam) ([]byte, error)
 	InitSystem() ([]byte, error)
 	ListServices() ([]byte, error)
-	RegisterService(svr Service) ([]byte, error)
+	RegisterService(svr ServiceUnderTest) ([]byte, error)
 }
 
 const (
@@ -69,7 +69,7 @@ func NewWorker(host string) Action {
 	}
 }
 
-func (c *client) RegisterService(srv Service) ([]byte, error) {
+func (c *client) RegisterService(srv ServiceUnderTest) ([]byte, error) {
 	if _, err := url.ParseRequestURI(srv.Address); err != nil {
 		return nil, err
 	}
diff --git a/pkg/cover/server.go b/pkg/cover/server.go
index b923d80..0ad07d9 100644
--- a/pkg/cover/server.go
+++ b/pkg/cover/server.go
@@ -33,18 +33,35 @@ import (
 	"k8s.io/test-infra/gopherage/pkg/cov"
 )
 
-// DefaultStore implements the IPersistence interface
-var DefaultStore Store
-
 // LogFile a file to save log.
 const LogFile = "goc.log"
 
-func init() {
-	DefaultStore = NewFileStore()
+type server struct {
+	PersistenceFile string
+	Store           Store
+}
+
+// NewFileBasedServer new a file based server with persistenceFile
+func NewFileBasedServer(persistenceFile string) (*server, error) {
+	store, err := NewFileStore(persistenceFile)
+	if err != nil {
+		return nil, err
+	}
+	return &server{
+		PersistenceFile: persistenceFile,
+		Store:           store,
+	}, nil
+}
+
+// NewMemoryBasedServer new a memory based server without persistenceFile
+func NewMemoryBasedServer() *server {
+	return &server{
+		Store: NewMemoryStore(),
+	}
 }
 
 // Run starts coverage host center
-func Run(port string) {
+func (s *server) Run(port string) {
 	f, err := os.Create(LogFile)
 	if err != nil {
 		log.Fatalf("failed to create log file %s, err: %v", LogFile, err)
@@ -52,34 +69,34 @@ func Run(port string) {
 
 	// both log to stdout and file by default
 	mw := io.MultiWriter(f, os.Stdout)
-	r := GocServer(mw)
+	r := s.Route(mw)
 	log.Fatal(r.Run(port))
 }
 
-// GocServer init goc server engine
-func GocServer(w io.Writer) *gin.Engine {
+// Router init goc server engine
+func (s *server) Route(w io.Writer) *gin.Engine {
 	if w != nil {
 		gin.DefaultWriter = w
 	}
 	r := gin.Default()
 	// api to show the registered services
-	r.StaticFile(PersistenceFile, "./"+PersistenceFile)
+	r.StaticFile("static", "./"+s.PersistenceFile)
 
 	v1 := r.Group("/v1")
 	{
-		v1.POST("/cover/register", registerService)
-		v1.GET("/cover/profile", profile)
-		v1.POST("/cover/profile", profile)
-		v1.POST("/cover/clear", clear)
-		v1.POST("/cover/init", initSystem)
-		v1.GET("/cover/list", listServices)
+		v1.POST("/cover/register", s.registerService)
+		v1.GET("/cover/profile", s.profile)
+		v1.POST("/cover/profile", s.profile)
+		v1.POST("/cover/clear", s.clear)
+		v1.POST("/cover/init", s.initSystem)
+		v1.GET("/cover/list", s.listServices)
 	}
 
 	return r
 }
 
-// Service is a entry under being tested
-type Service struct {
+// ServiceUnderTest is a entry under being tested
+type ServiceUnderTest struct {
 	Name    string `form:"name" json:"name" binding:"required"`
 	Address string `form:"address" json:"address" binding:"required"`
 }
@@ -93,13 +110,13 @@ type ProfileParam struct {
 }
 
 //listServices list all the registered services
-func listServices(c *gin.Context) {
-	services := DefaultStore.GetAll()
+func (s *server) listServices(c *gin.Context) {
+	services := s.Store.GetAll()
 	c.JSON(http.StatusOK, services)
 }
 
-func registerService(c *gin.Context) {
-	var service Service
+func (s *server) registerService(c *gin.Context) {
+	var service ServiceUnderTest
 	if err := c.ShouldBind(&service); err != nil {
 		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 		return
@@ -122,9 +139,9 @@ func registerService(c *gin.Context) {
 		service.Address = fmt.Sprintf("http://%s:%s", realIP, port)
 	}
 
-	address := DefaultStore.Get(service.Name)
+	address := s.Store.Get(service.Name)
 	if !contains(address, service.Address) {
-		if err := DefaultStore.Add(service); err != nil {
+		if err := s.Store.Add(service); err != nil && err != ErrServiceAlreadyRegistered {
 			c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
 			return
 		}
@@ -137,14 +154,14 @@ func registerService(c *gin.Context) {
 // profile API examples:
 // POST /v1/cover/profile
 // { "force": "true", "service":["a","b"], "address":["c","d"],"coverfile":["e","f"] }
-func profile(c *gin.Context) {
+func (s *server) profile(c *gin.Context) {
 	var body ProfileParam
 	if err := c.ShouldBind(&body); err != nil {
 		c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
 		return
 	}
 
-	allInfos := DefaultStore.GetAll()
+	allInfos := s.Store.GetAll()
 	filterAddrList, err := filterAddrs(body.Service, body.Address, body.Force, allInfos)
 	if err != nil {
 		c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
@@ -216,13 +233,13 @@ func filterProfile(coverFile []string, profiles []*cover.Profile) ([]*cover.Prof
 	return out, nil
 }
 
-func clear(c *gin.Context) {
+func (s *server) clear(c *gin.Context) {
 	var body ProfileParam
 	if err := c.ShouldBind(&body); err != nil {
 		c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
 		return
 	}
-	svrsUnderTest := DefaultStore.GetAll()
+	svrsUnderTest := s.Store.GetAll()
 	filterAddrList, err := filterAddrs(body.Service, body.Address, true, svrsUnderTest)
 	if err != nil {
 		c.JSON(http.StatusExpectationFailed, gin.H{"error": err.Error()})
@@ -239,8 +256,8 @@ func clear(c *gin.Context) {
 
 }
 
-func initSystem(c *gin.Context) {
-	if err := DefaultStore.Init(); err != nil {
+func (s *server) initSystem(c *gin.Context) {
+	if err := s.Store.Init(); err != nil {
 		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
 		return
 	}
@@ -313,6 +330,6 @@ func filterAddrs(serviceList, addressList []string, force bool, allInfos map[str
 		filterAddrList = addressAll
 	}
 
-	// Return all servers when all param is nil
+	// Return all services when all param is nil
 	return filterAddrList, nil
 }
diff --git a/pkg/cover/store.go b/pkg/cover/store.go
index a18aa9a..f36520d 100644
--- a/pkg/cover/store.go
+++ b/pkg/cover/store.go
@@ -18,18 +18,21 @@ package cover
 
 import (
 	"bufio"
+	"errors"
 	"fmt"
+	log "github.com/sirupsen/logrus"
 	"os"
+	"path/filepath"
 	"strings"
 	"sync"
-
-	log "github.com/sirupsen/logrus"
 )
 
+var ErrServiceAlreadyRegistered = errors.New("service already registered")
+
 // Store persistents the registered service information
 type Store interface {
 	// Add adds the given service to store
-	Add(s Service) error
+	Add(s ServiceUnderTest) error
 
 	// Get returns the registered service information with the given service's name
 	Get(name string) []string
@@ -44,9 +47,6 @@ type Store interface {
 	Set(services map[string][]string)
 }
 
-// PersistenceFile is the file to save services address information
-const PersistenceFile = "_svrs_address.txt"
-
 // fileStore holds the registered services into memory and persistent to a local file
 type fileStore struct {
 	mu             sync.RWMutex
@@ -56,9 +56,17 @@ type fileStore struct {
 }
 
 // NewFileStore creates a store using local file
-func NewFileStore() Store {
+func NewFileStore(persistenceFile string) (store Store, err error) {
+	path, err := filepath.Abs(persistenceFile)
+	if err != nil {
+		return nil, err
+	}
+	err = os.MkdirAll(filepath.Dir(path), os.ModePerm)
+	if err != nil {
+		return nil, err
+	}
 	l := &fileStore{
-		persistentFile: PersistenceFile,
+		persistentFile: path,
 		memoryStore:    NewMemoryStore(),
 	}
 
@@ -66,12 +74,14 @@ func NewFileStore() Store {
 		log.Fatalf("load failed, file: %s, err: %v", l.persistentFile, err)
 	}
 
-	return l
+	return l, nil
 }
 
 // Add adds the given service to file Store
-func (l *fileStore) Add(s Service) error {
-	l.memoryStore.Add(s)
+func (l *fileStore) Add(s ServiceUnderTest) error {
+	if err := l.memoryStore.Add(s); err != nil {
+		return err
+	}
 
 	// persistent to local store
 	l.mu.Lock()
@@ -147,7 +157,7 @@ func (l *fileStore) Set(services map[string][]string) {
 	panic("TO BE IMPLEMENTED")
 }
 
-func (l *fileStore) appendToFile(s Service) error {
+func (l *fileStore) appendToFile(s ServiceUnderTest) error {
 	f, err := os.OpenFile(l.persistentFile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
 	if err != nil {
 		return err
@@ -163,7 +173,7 @@ func (l *fileStore) appendToFile(s Service) error {
 	return nil
 }
 
-func format(s Service) string {
+func format(s ServiceUnderTest) string {
 	return fmt.Sprintf("%s&%s", s.Name, s.Address)
 }
 
@@ -185,7 +195,7 @@ func NewMemoryStore() Store {
 }
 
 // Add adds the given service to MemoryStore
-func (l *memoryStore) Add(s Service) error {
+func (l *memoryStore) Add(s ServiceUnderTest) error {
 	l.mu.Lock()
 	defer l.mu.Unlock()
 	// load to memory
@@ -193,7 +203,7 @@ func (l *memoryStore) Add(s Service) error {
 		for _, addr := range addrs {
 			if addr == s.Address {
 				log.Printf("service registered already, name: %s, address: %s", s.Name, s.Address)
-				return nil
+				return ErrServiceAlreadyRegistered
 			}
 		}
 		addrs = append(addrs, s.Address)


Test patch:
diff --git a/pkg/cover/client_test.go b/pkg/cover/client_test.go
index 6d812cb..077acba 100644
--- a/pkg/cover/client_test.go
+++ b/pkg/cover/client_test.go
@@ -28,7 +28,9 @@ import (
 
 func TestClientAction(t *testing.T) {
 	// mock goc server
-	ts := httptest.NewServer(GocServer(os.Stdout))
+	server, err := NewFileBasedServer("_svrs_address.txt")
+	assert.NoError(t, err)
+	ts := httptest.NewServer(server.Route(os.Stdout))
 	defer ts.Close()
 	var client = NewWorker(ts.URL)
 
@@ -46,15 +48,15 @@ func TestClientAction(t *testing.T) {
 	}))
 	defer profileErrMockSvr.Close()
 
-	// regsiter service into goc server
-	var src Service
+	// register service into goc server
+	var src ServiceUnderTest
 	src.Name = "serviceSuccess"
 	src.Address = profileSuccessMockSvr.URL
 	res, err := client.RegisterService(src)
 	assert.NoError(t, err)
 	assert.Contains(t, string(res), "success")
 
-	// do list and check service
+	// do list and check server
 	res, err = client.ListServices()
 	assert.NoError(t, err)
 	assert.Contains(t, string(res), src.Address)
@@ -63,64 +65,64 @@ func TestClientAction(t *testing.T) {
 	// get profile from goc server
 	tcs := []struct {
 		name        string
-		service     Service
+		service     ServiceUnderTest
 		param       ProfileParam
 		expected    string
 		expectedErr bool
 	}{
 		{
-			name:        "both service and address existed",
-			service:     Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			name:        "both server and address existed",
+			service:     ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:       ProfileParam{Force: false, Service: []string{"serviceOK"}, Address: []string{profileSuccessMockSvr.URL}},
 			expectedErr: true,
 		},
 		{
-			name:     "valid test with no service flag provide",
-			service:  Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			name:     "valid test with no server flag provide",
+			service:  ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:    ProfileParam{},
 			expected: "mockService/main.go:30.13,48.33 13 1",
 		},
 		{
-			name:     "valid test with service flag provide",
-			service:  Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			name:     "valid test with server flag provide",
+			service:  ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:    ProfileParam{Service: []string{"serviceOK"}},
 			expected: "mockService/main.go:30.13,48.33 13 1",
 		},
 		{
 			name:     "valid test with address flag provide",
-			service:  Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			service:  ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:    ProfileParam{Address: []string{profileSuccessMockSvr.URL}},
 			expected: "mockService/main.go:30.13,48.33 13 1",
 		},
 		{
-			name:        "invalid test with invalid service flag provide",
-			service:     Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			name:        "invalid test with invalid server flag provide",
+			service:     ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:       ProfileParam{Service: []string{"unknown"}},
-			expected:    "service [unknown] not found",
+			expected:    "server [unknown] not found",
 			expectedErr: true,
 		},
 		{
-			name:        "invalid test with invalid profile got by service",
-			service:     Service{Name: "serviceErr", Address: profileErrMockSvr.URL},
+			name:        "invalid test with invalid profile got by server",
+			service:     ServiceUnderTest{Name: "serviceErr", Address: profileErrMockSvr.URL},
 			expected:    "bad mode line: error",
 			expectedErr: true,
 		},
 		{
-			name:        "invalid test with disconnected service",
-			service:     Service{Name: "serviceNotExist", Address: "http://172.0.0.2:7777"},
+			name:        "invalid test with disconnected server",
+			service:     ServiceUnderTest{Name: "serviceNotExist", Address: "http://172.0.0.2:7777"},
 			expected:    "connection refused",
 			expectedErr: true,
 		},
 		{
 			name:        "invalid test with empty profile",
-			service:     Service{Name: "serviceNotExist", Address: "http://172.0.0.2:7777"},
+			service:     ServiceUnderTest{Name: "serviceNotExist", Address: "http://172.0.0.2:7777"},
 			param:       ProfileParam{Force: true},
 			expectedErr: true,
 			expected:    "no profiles",
 		},
 		{
 			name:     "valid test with coverfile flag provide",
-			service:  Service{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
+			service:  ServiceUnderTest{Name: "serviceOK", Address: profileSuccessMockSvr.URL},
 			param:    ProfileParam{CoverFilePatterns: []string{"b.go$"}},
 			expected: "b/b.go",
 		},
@@ -150,7 +152,7 @@ func TestClientAction(t *testing.T) {
 		})
 	}
 
-	// init system and check service again
+	// init system and check server again
 	_, err = client.InitSystem()
 	assert.NoError(t, err)
 	res, err = client.ListServices()
@@ -162,7 +164,7 @@ func TestClientRegisterService(t *testing.T) {
 	c := &client{}
 
 	// client register with empty address
-	testService1 := Service{
+	testService1 := ServiceUnderTest{
 		Address: "",
 		Name:    "abc",
 	}
@@ -170,7 +172,7 @@ func TestClientRegisterService(t *testing.T) {
 	assert.Contains(t, err.Error(), "empty url")
 
 	// client register with empty name
-	testService2 := Service{
+	testService2 := ServiceUnderTest{
 		Address: "http://127.0.0.1:444",
 		Name:    "",
 	}
diff --git a/pkg/cover/server_test.go b/pkg/cover/server_test.go
index fb7feb7..c144911 100644
--- a/pkg/cover/server_test.go
+++ b/pkg/cover/server_test.go
@@ -22,7 +22,7 @@ type MockStore struct {
 	mock.Mock
 }
 
-func (m *MockStore) Add(s Service) error {
+func (m *MockStore) Add(s ServiceUnderTest) error {
 	args := m.Called(s)
 	return args.Error(0)
 }
@@ -113,7 +113,9 @@ func TestFilterAddrs(t *testing.T) {
 }
 
 func TestRegisterService(t *testing.T) {
-	router := GocServer(os.Stdout)
+	server, err := NewFileBasedServer("_svrs_address.txt")
+	assert.NoError(t, err)
+	router := server.Route(os.Stdout)
 
 	// register with empty service struct
 	w := httptest.NewRecorder()
@@ -147,7 +149,7 @@ func TestRegisterService(t *testing.T) {
 	assert.Contains(t, w.Body.String(), "missing port in address")
 
 	// register with store failure
-	expectedS := Service{
+	expectedS := ServiceUnderTest{
 		Name:    "foo",
 		Address: "http://:64444", // the real IP is empty in unittest, so server will get a empty one
 	}
@@ -155,7 +157,7 @@ func TestRegisterService(t *testing.T) {
 	testObj.On("Get", "foo").Return([]string{"http://127.0.0.1:66666"})
 	testObj.On("Add", expectedS).Return(fmt.Errorf("lala error"))
 
-	DefaultStore = testObj
+	server.Store = testObj
 
 	w = httptest.NewRecorder()
 	data.Set("name", expectedS.Name)
@@ -169,7 +171,9 @@ func TestRegisterService(t *testing.T) {
 }
 
 func TestProfileService(t *testing.T) {
-	router := GocServer(os.Stdout)
+	server, err := NewFileBasedServer("_svrs_address.txt")
+	assert.NoError(t, err)
+	router := server.Route(os.Stdout)
 
 	// get profile with invalid force parameter
 	w := httptest.NewRecorder()
@@ -184,9 +188,10 @@ func TestClearService(t *testing.T) {
 	testObj := new(MockStore)
 	testObj.On("GetAll").Return(map[string][]string{"foo": {"http://127.0.0.1:66666"}})
 
-	DefaultStore = testObj
-
-	router := GocServer(os.Stdout)
+	server := &server{
+		Store: testObj,
+	}
+	router := server.Route(os.Stdout)
 
 	// clear profile with non-exist port
 	w := httptest.NewRecorder()
@@ -224,9 +229,10 @@ func TestInitService(t *testing.T) {
 	testObj := new(MockStore)
 	testObj.On("Init").Return(fmt.Errorf("lala error"))
 
-	DefaultStore = testObj
-
-	router := GocServer(os.Stdout)
+	server := &server{
+		Store: testObj,
+	}
+	router := server.Route(os.Stdout)
 
 	// get profile with invalid force parameter
 	w := httptest.NewRecorder()
diff --git a/pkg/cover/store_test.go b/pkg/cover/store_test.go
index f4bd8aa..6d5d076 100644
--- a/pkg/cover/store_test.go
+++ b/pkg/cover/store_test.go
@@ -17,31 +17,34 @@
 package cover
 
 import (
+	"github.com/stretchr/testify/assert"
 	"testing"
 )
 
 func TestLocalStore(t *testing.T) {
-	localStore := NewFileStore()
-	var tc1 = Service{
+	localStore, err := NewFileStore("_svrs_address.txt")
+	assert.NoError(t, err)
+	var tc1 = ServiceUnderTest{
 		Name:    "a",
 		Address: "http://127.0.0.1",
 	}
-	var tc2 = Service{
+	var tc2 = ServiceUnderTest{
 		Name:    "b",
 		Address: "http://127.0.0.2",
 	}
-	var tc3 = Service{
+	var tc3 = ServiceUnderTest{
 		Name:    "c",
 		Address: "http://127.0.0.3",
 	}
-	var tc4 = Service{
+	var tc4 = ServiceUnderTest{
 		Name:    "a",
 		Address: "http://127.0.0.4",
 	}
-	localStore.Add(tc1)
-	localStore.Add(tc2)
-	localStore.Add(tc3)
-	localStore.Add(tc4)
+	assert.NoError(t, localStore.Add(tc1))
+	assert.Equal(t, localStore.Add(tc1), ErrServiceAlreadyRegistered)
+	assert.NoError(t, localStore.Add(tc2))
+	assert.NoError(t, localStore.Add(tc3))
+	assert.NoError(t, localStore.Add(tc4))
 	addrs := localStore.Get(tc1.Name)
 	if len(addrs) != 2 {
 		t.Error("unexpected result")
@@ -57,6 +60,10 @@ func TestLocalStore(t *testing.T) {
 		t.Error("local store check failed")
 	}
 
+	localStoreNew, err := NewFileStore("_svrs_address.txt")
+	assert.NoError(t, err)
+	assert.Equal(t, localStore.GetAll(), localStoreNew.GetAll())
+
 	localStore.Init()
 	if len(localStore.GetAll()) != 0 {
 		t.Error("local store init failed")
diff --git a/tests/server.bats b/tests/server.bats
index 371cee5..ed9719e 100755
--- a/tests/server.bats
+++ b/tests/server.bats
@@ -22,7 +22,7 @@ setup_file() {
     sleep 2
     goc init
     # run covered goc
-    gocc server --port=:60001 --debug 3>&- &
+    gocc server --port=:60001 --local-persistence="persistence/servicesAll.txt" --debug 3>&- &
     GOCC_PID=$!
     sleep 2
     info "goc gocc server started"
@@ -57,4 +57,11 @@ teardown_file() {
     # connect to covered goc
     run goc profile --center=http://127.0.0.1:60001
     [ "$status" -eq 0 ]
+
+    # verify the persistence file exist
+    [ -f "$WORKDIR/persistence/servicesAll.txt" ]
+    # remove goc persistence file
+    run goc init --center=http://127.0.0.1:60001
+    [ "$status" -eq 0 ]
+    [ ! -f "$WORKDIR/persistence/servicesAll.txt" ]
 }
\ No newline at end of file