blob: 3d7759a226d164fd43534d07fa9426a069cd70d1 [file] [log] [blame]
// Copyright Istio Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package progress
import (
"bytes"
"io"
"testing"
)
import (
"github.com/apache/dubbo-go-pixiu/operator/pkg/name"
)
func TestProgressLog(t *testing.T) {
buf := bytes.NewBuffer(nil)
testBuf := io.Writer(buf)
testWriter = &testBuf
expected := ""
expect := func(e string) {
t.Helper()
// In buffer mode we don't overwrite old data, so we are constantly appending to the expected
newExpected := expected + "\n" + e
if newExpected != buf.String() {
t.Fatalf("expected '%v', \ngot '%v'", newExpected, buf.String())
}
expected = newExpected
}
p := NewLog()
cnp := name.PilotComponentName
cnpo := name.UserFacingComponentName(cnp)
cnb := name.IstioBaseComponentName
cnbo := name.UserFacingComponentName(cnb)
foo := p.NewComponent(string(cnp))
foo.ReportProgress()
expect(`- Processing resources for ` + cnpo + `.`)
bar := p.NewComponent(string(cnb))
bar.ReportProgress()
// string buffer won't rewrite, so we append
expect(`- Processing resources for ` + cnbo + `, ` + cnpo + `.`)
bar.ReportProgress()
bar.ReportProgress()
bar.ReportWaiting([]string{"deployment"})
expect(`- Processing resources for ` + cnbo + `, ` + cnpo + `. Waiting for deployment`)
bar.ReportError("some error")
expect(`✘ ` + cnbo + ` encountered an error: some error`)
foo.ReportProgress()
expect(`- Processing resources for ` + cnpo + `.`)
foo.ReportFinished()
expect(`✔ ` + cnpo + ` installed`)
p.SetState(StatePruning)
expect(`- Pruning removed resources`)
p.SetState(StateComplete)
expect(`✔ Installation complete`)
p.SetState(StateUninstallComplete)
expect(`✔ Uninstall complete`)
}