How to use runMultiFileTestCase method of js Package

Best K6 code snippet using js.runMultiFileTestCase

runner_test.go

Source:runner_test.go Github

copy

Full Screen

...1634 expInitErr bool1635 expVUErr bool1636 samples chan stats.SampleContainer1637}1638func runMultiFileTestCase(t *testing.T, tc multiFileTestCase, tb *httpmultibin.HTTPMultiBin) {1639 t.Helper()1640 logger := testutils.NewLogger(t)1641 runner, err := New(1642 logger,1643 &loader.SourceData{1644 URL: &url.URL{Path: tc.cwd + "/script.js", Scheme: "file"},1645 Data: []byte(tc.script),1646 },1647 tc.fses,1648 tc.rtOpts,1649 )1650 if tc.expInitErr {1651 require.Error(t, err)1652 return1653 }1654 require.NoError(t, err)1655 options := runner.GetOptions()1656 require.Empty(t, options.Validate())1657 vu, err := runner.NewVU(1, 1, tc.samples)1658 require.NoError(t, err)1659 jsVU, ok := vu.(*VU)1660 require.True(t, ok)1661 jsVU.state.Dialer = tb.Dialer1662 jsVU.state.TLSConfig = tb.TLSClientConfig1663 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)1664 defer cancel()1665 activeVU := vu.Activate(&lib.VUActivationParams{RunContext: ctx})1666 err = activeVU.RunOnce()1667 if tc.expVUErr {1668 require.Error(t, err)1669 } else {1670 require.NoError(t, err)1671 }1672 arc := runner.MakeArchive()1673 runnerFromArc, err := NewFromArchive(logger, arc, tc.rtOpts)1674 require.NoError(t, err)1675 vuFromArc, err := runnerFromArc.NewVU(2, 2, tc.samples)1676 require.NoError(t, err)1677 jsVUFromArc, ok := vuFromArc.(*VU)1678 require.True(t, ok)1679 jsVUFromArc.state.Dialer = tb.Dialer1680 jsVUFromArc.state.TLSConfig = tb.TLSClientConfig1681 activeVUFromArc := jsVUFromArc.Activate(&lib.VUActivationParams{RunContext: ctx})1682 err = activeVUFromArc.RunOnce()1683 if tc.expVUErr {1684 require.Error(t, err)1685 return1686 }1687 require.NoError(t, err)1688}1689func TestComplicatedFileImportsForGRPC(t *testing.T) {1690 t.Parallel()1691 tb := httpmultibin.NewHTTPMultiBin(t)1692 tb.GRPCStub.UnaryCallFunc = func(ctx context.Context, sreq *grpc_testing.SimpleRequest) (1693 *grpc_testing.SimpleResponse, error,1694 ) {1695 return &grpc_testing.SimpleResponse{1696 Username: "foo",1697 }, nil1698 }1699 fs := afero.NewMemMapFs()1700 protoFile, err := ioutil.ReadFile("../vendor/google.golang.org/grpc/test/grpc_testing/test.proto")1701 require.NoError(t, err)1702 require.NoError(t, afero.WriteFile(fs, "/path/to/service.proto", protoFile, 0644))1703 require.NoError(t, afero.WriteFile(fs, "/path/to/same-dir.proto", []byte(1704 `syntax = "proto3";package whatever;import "service.proto";`,1705 ), 0644))1706 require.NoError(t, afero.WriteFile(fs, "/path/subdir.proto", []byte(1707 `syntax = "proto3";package whatever;import "to/service.proto";`,1708 ), 0644))1709 require.NoError(t, afero.WriteFile(fs, "/path/to/abs.proto", []byte(1710 `syntax = "proto3";package whatever;import "/path/to/service.proto";`,1711 ), 0644))1712 grpcTestCase := func(expInitErr, expVUErr bool, cwd, loadCode string) multiFileTestCase {1713 script := tb.Replacer.Replace(fmt.Sprintf(`1714 var grpc = require('k6/net/grpc');1715 var client = new grpc.Client();1716 %s // load statements1717 exports.default = function() {1718 client.connect('GRPCBIN_ADDR', {timeout: '3s'});1719 var resp = client.invoke('grpc.testing.TestService/UnaryCall', {})1720 if (!resp.message || resp.error || resp.message.username !== 'foo') {1721 throw new Error('unexpected response message: ' + JSON.stringify(resp.message))1722 }1723 }1724 `, loadCode))1725 return multiFileTestCase{1726 fses: map[string]afero.Fs{"file": fs, "https": afero.NewMemMapFs()},1727 rtOpts: lib.RuntimeOptions{CompatibilityMode: null.NewString("base", true)},1728 samples: make(chan stats.SampleContainer, 100),1729 cwd: cwd, expInitErr: expInitErr, expVUErr: expVUErr, script: script,1730 }1731 }1732 testCases := []multiFileTestCase{1733 grpcTestCase(false, true, "/", `/* no grpc loads */`), // exp VU error with no proto files loaded1734 // Init errors when the protobuf file can't be loaded1735 grpcTestCase(true, false, "/", `client.load(null, 'service.proto');`),1736 grpcTestCase(true, false, "/", `client.load(null, '/wrong/path/to/service.proto');`),1737 grpcTestCase(true, false, "/", `client.load(['/', '/path/'], 'service.proto');`),1738 // Direct imports of service.proto1739 grpcTestCase(false, false, "/", `client.load(null, '/path/to/service.proto');`), // full path should be fine1740 grpcTestCase(false, false, "/path/to/", `client.load([], 'service.proto');`), // file name from same folder1741 grpcTestCase(false, false, "/", `client.load(['./path//to/'], 'service.proto');`),1742 grpcTestCase(false, false, "/path/", `client.load(['./to/'], 'service.proto');`),1743 grpcTestCase(false, false, "/whatever", `client.load(['/path/to/'], 'service.proto');`), // with import paths1744 grpcTestCase(false, false, "/path", `client.load(['/', '/path/to/'], 'service.proto');`), // with import paths1745 grpcTestCase(false, false, "/whatever", `client.load(['../path/to/'], 'service.proto');`),1746 // Import another file that imports "service.proto" directly1747 grpcTestCase(true, false, "/", `client.load([], '/path/to/same-dir.proto');`),1748 grpcTestCase(true, false, "/path/", `client.load([], 'to/same-dir.proto');`),1749 grpcTestCase(true, false, "/", `client.load(['/path/'], 'to/same-dir.proto');`),1750 grpcTestCase(false, false, "/path/to/", `client.load([], 'same-dir.proto');`),1751 grpcTestCase(false, false, "/", `client.load(['/path/to/'], 'same-dir.proto');`),1752 grpcTestCase(false, false, "/whatever", `client.load(['/other', '/path/to/'], 'same-dir.proto');`),1753 grpcTestCase(false, false, "/", `client.load(['./path//to/'], 'same-dir.proto');`),1754 grpcTestCase(false, false, "/path/", `client.load(['./to/'], 'same-dir.proto');`),1755 grpcTestCase(false, false, "/whatever", `client.load(['../path/to/'], 'same-dir.proto');`),1756 // Import another file that imports "to/service.proto" directly1757 grpcTestCase(true, false, "/", `client.load([], '/path/to/subdir.proto');`),1758 grpcTestCase(false, false, "/path/", `client.load([], 'subdir.proto');`),1759 grpcTestCase(false, false, "/", `client.load(['/path/'], 'subdir.proto');`),1760 grpcTestCase(false, false, "/", `client.load(['./path/'], 'subdir.proto');`),1761 grpcTestCase(false, false, "/whatever", `client.load(['/other', '/path/'], 'subdir.proto');`),1762 grpcTestCase(false, false, "/whatever", `client.load(['../other', '../path/'], 'subdir.proto');`),1763 // Import another file that imports "/path/to/service.proto" directly1764 grpcTestCase(true, false, "/", `client.load(['/path'], '/path/to/abs.proto');`),1765 grpcTestCase(false, false, "/", `client.load([], '/path/to/abs.proto');`),1766 grpcTestCase(false, false, "/whatever", `client.load(['/'], '/path/to/abs.proto');`),1767 }1768 for i, tc := range testCases {1769 i, tc := i, tc1770 t.Run(fmt.Sprintf("TestCase_%d", i), func(t *testing.T) {1771 t.Parallel()1772 t.Logf(1773 "CWD: %s, expInitErr: %t, expVUErr: %t, script injected with: `%s`",1774 tc.cwd, tc.expInitErr, tc.expVUErr, tc.script,1775 )1776 runMultiFileTestCase(t, tc, tb)1777 })1778 }1779}1780func TestMinIterationDurationIsCancellable(t *testing.T) {1781 t.Parallel()1782 r, err := getSimpleRunner(t, "/script.js", `1783 exports.options = { iterations: 1, vus: 1, minIterationDuration: '1m' };1784 exports.default = function() { /* do nothing */ };1785 `)1786 require.NoError(t, err)1787 ch := make(chan stats.SampleContainer, 1000)1788 initVU, err := r.NewVU(1, 1, ch)1789 require.NoError(t, err)1790 ctx, cancel := context.WithCancel(context.Background())...

Full Screen

Full Screen

runMultiFileTestCase

Using AI Code Generation

copy

Full Screen

1import (2type js struct {3}4func (js) runMultiFileTestCase() {5 scanner := bufio.NewScanner(os.Stdin)6 scanner.Scan()7 n, _ := strconv.Atoi(scanner.Text())8 for i := 0; i < n; i++ {9 scanner.Scan()10 s := strings.Split(scanner.Text(), "")11 for j := 0; j < len(s); j++ {12 if j%2 == 0 {13 fmt.Print(s[j])14 }15 }16 fmt.Print(" ")17 for j := 0; j < len(s); j++ {18 if j%2 != 0 {19 fmt.Print(s[j])20 }21 }22 fmt.Println()23 }24}25func main() {26 j.runMultiFileTestCase()27}

Full Screen

Full Screen

runMultiFileTestCase

Using AI Code Generation

copy

Full Screen

1import (2func TestAdd(t *testing.T) {3 testCases := []struct {4 }{5 {[]int{1, 2, 3}, 6},6 {[]int{0, 0, 0}, 0},7 {[]int{5, 5, 5}, 15},8 {[]int{-1, -1, -1}, -3},9 }10 for _, tc := range testCases {11 actual := add(tc.input[0], tc.input[1], tc.input[2])12 if actual != tc.expected {13 t.Errorf("add(%d, %d, %d): expected %d, actual %d", tc.input[0], tc.input[1], tc.input[2], tc.expected, actual)14 }15 }16}17func add(a, b, c int) int {18}19import (20func TestAdd(t *testing.T) {21 testCases := []struct {22 }{23 {[]int{1, 2, 3}, 6},24 {[]int{0, 0, 0}, 0},25 {[]int{5, 5, 5}, 15},26 {[]int{-1, -1, -1}, -3},27 }28 for _, tc := range testCases {29 actual := add(tc.input[0], tc.input[1], tc.input[2])30 if actual != tc.expected {31 t.Errorf("add(%d, %d, %d): expected %d, actual %d", tc.input[0], tc.input[1], tc.input[2], tc.expected, actual)32 }33 }34}35func add(a, b, c int) int {36}37import (38func TestAdd(t *testing.T) {

Full Screen

Full Screen

runMultiFileTestCase

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 js := NewJS()4 js.SetJsFile("test.js")5 err := js.Run()6 if err != nil {7 log.Fatal(err)8 }9 result, err := js.RunFunction("add", 1, 2)10 if err != nil {11 log.Fatal(err)12 }13 fmt.Println(result)14 result, err = js.RunFunction("add", 1, 2)15 if err != nil {16 log.Fatal(err)17 }18 fmt.Println(result)19 result, err = js.RunFunction("add", 1, 2)20 if err != nil {21 log.Fatal(err)22 }23 fmt.Println(result)24 result, err = js.RunFunction("add", 1, 2)25 if err != nil {26 log.Fatal(err)27 }28 fmt.Println(result)29 result, err = js.RunFunction("add", 1, 2)30 if err != nil {31 log.Fatal(err)32 }33 fmt.Println(result)34 result, err = js.RunFunction("add", 1, 2)35 if err != nil {36 log.Fatal(err)37 }38 fmt.Println(result)39 result, err = js.RunFunction("add", 1, 2)40 if err != nil {41 log.Fatal(err)42 }43 fmt.Println(result)44 result, err = js.RunFunction("add", 1, 2)45 if err != nil {46 log.Fatal(err)47 }48 fmt.Println(result)49 result, err = js.RunFunction("add", 1, 2)50 if err != nil {51 log.Fatal(err)52 }53 fmt.Println(result)54 result, err = js.RunFunction("add", 1, 2)55 if err != nil {56 log.Fatal(err)57 }58 fmt.Println(result)

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run K6 automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful