• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / deployments / 936707763

pending completion
936707763

Pull #888

gitlab-ci

merlin-northern
test: units extension for the query by update_type

Ticket: MEN-6592
Signed-off-by: Peter Grzybowski <peter@northern.tech>
Pull Request #888: feat: query releases by update type

8 of 8 new or added lines in 3 files covered. (100.0%)

212 existing lines in 2 files now uncovered.

7709 of 9688 relevant lines covered (79.57%)

34.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.1
/store/mongo/migrations.go
1
// Copyright 2023 Northern.tech AS
2
//
3
//        Licensed under the Apache License, Version 2.0 (the "License");
4
//        you may not use this file except in compliance with the License.
5
//        You may obtain a copy of the License at
6
//
7
//            http://www.apache.org/licenses/LICENSE-2.0
8
//
9
//        Unless required by applicable law or agreed to in writing, software
10
//        distributed under the License is distributed on an "AS IS" BASIS,
11
//        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
//        See the License for the specific language governing permissions and
13
//        limitations under the License.
14
package mongo
15

16
import (
17
        "context"
18

19
        "github.com/mendersoftware/go-lib-micro/log"
20
        "github.com/mendersoftware/go-lib-micro/mongo/migrate"
21
        ctx_store "github.com/mendersoftware/go-lib-micro/store"
22
        "github.com/pkg/errors"
23
        "go.mongodb.org/mongo-driver/mongo"
24
)
25

26
const (
27
        DbVersion        = "1.2.16"
28
        DbMinimumVersion = "1.2.14"
29
        DbName           = "deployment_service"
30
)
31

32
func Migrate(ctx context.Context,
33
        version string,
34
        client *mongo.Client,
35
        automigrate bool) error {
1✔
36

1✔
37
        l := log.FromContext(ctx)
1✔
38

1✔
39
        dbs, err := migrate.GetTenantDbs(ctx, client, ctx_store.IsTenantDb(DbName))
1✔
40
        if err != nil {
1✔
41
                return errors.Wrap(err, "failed go retrieve tenant DBs")
×
42
        }
×
43

44
        if len(dbs) == 0 {
2✔
45
                dbs = []string{DbName}
1✔
46
        }
1✔
47

48
        if automigrate {
2✔
49
                l.Infof("automigrate is ON, will apply migrations")
1✔
50
        } else {
1✔
51
                l.Infof("automigrate is OFF, will check db version compatibility")
×
52
        }
×
53

54
        for _, d := range dbs {
2✔
55
                err := MigrateSingle(ctx, d, version, client, automigrate)
1✔
56
                if err != nil {
1✔
57
                        return err
×
58
                }
×
59
        }
60

61
        return nil
1✔
62
}
63

64
func MigrateSingle(ctx context.Context,
65
        db string,
66
        version string,
67
        client *mongo.Client,
68
        automigrate bool) error {
17✔
69
        l := log.FromContext(ctx)
17✔
70

17✔
71
        l.Infof("migrating %s", db)
17✔
72

17✔
73
        ver, err := migrate.NewVersion(version)
17✔
74
        if err != nil {
17✔
75
                return errors.Wrap(err, "failed to parse service version")
×
76
        }
×
77

78
        m := migrate.SimpleMigrator{
17✔
79
                Client:      client,
17✔
80
                Db:          db,
17✔
81
                Automigrate: automigrate,
17✔
82
        }
17✔
83

17✔
84
        migrations := []migrate.Migration{
17✔
85
                &migration_1_2_1{
17✔
86
                        client: client,
17✔
87
                        db:     db,
17✔
88
                },
17✔
89
                &migration_1_2_2{
17✔
90
                        client: client,
17✔
91
                        db:     db,
17✔
92
                },
17✔
93
                &migration_1_2_3{
17✔
94
                        client: client,
17✔
95
                        db:     db,
17✔
96
                },
17✔
97
                &migration_1_2_4{
17✔
98
                        client: client,
17✔
99
                        db:     db,
17✔
100
                },
17✔
101
                &migration_1_2_5{
17✔
102
                        client: client,
17✔
103
                        db:     db,
17✔
104
                },
17✔
105
                &migration_1_2_6{
17✔
106
                        client: client,
17✔
107
                        db:     db,
17✔
108
                },
17✔
109
                &migration_1_2_7{
17✔
110
                        client: client,
17✔
111
                        db:     db,
17✔
112
                },
17✔
113
                &migration_1_2_9{
17✔
114
                        client: client,
17✔
115
                        db:     db,
17✔
116
                },
17✔
117
                &migration_1_2_10{
17✔
118
                        client: client,
17✔
119
                        db:     db,
17✔
120
                },
17✔
121
                &migration_1_2_11{
17✔
122
                        client: client,
17✔
123
                        db:     db,
17✔
124
                },
17✔
125
                &migration_1_2_13{
17✔
126
                        client: client,
17✔
127
                        db:     db,
17✔
128
                },
17✔
129
                &migration_1_2_14{
17✔
130
                        client: client,
17✔
131
                        db:     db,
17✔
132
                },
17✔
133
                &migration_1_2_15{
17✔
134
                        client: client,
17✔
135
                        db:     db,
17✔
136
                },
17✔
137
                &migration_1_2_16{
17✔
138
                        client: client,
17✔
139
                        db:     db,
17✔
140
                },
17✔
141
        }
17✔
142

17✔
143
        err = m.Apply(ctx, *ver, migrations)
17✔
144
        if err != nil {
17✔
UNCOV
145
                return errors.Wrap(err, "failed to apply migrations")
×
UNCOV
146
        }
×
147

148
        return nil
17✔
149
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc