Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

ci: e2e multi-core optimizations #11685

Merged
merged 73 commits into from
Jan 18, 2023

Conversation

awsluja
Copy link
Contributor

@awsluja awsluja commented Dec 30, 2022

Description of changes

Currently, every single test file runs on its own executor.
On windows, that means we only utilize 1 of 4 cores available.
On linux, that means we only utilize 1 of 2 cores on Medium instances, and 1 of 4 cores on Large instances.

This PR updates our testing framework so that we utilize every core available, or 1 core for the operating system, and the remaining cores are assigned to a worker in the worker pool.

We will use this setup moving forward:

Windows Test with 4 CPUs -> 1 core for the OS, and 3 Workers
Linux Test with 4 CPUs -> 1 core for the OS, and 3 Workers

Linux Test with 2 CPUs -> 1 core for the OS, and 1 Worker --- we use this setup sparingly (only for tests that don't run well with other tests)

Here is an example run (99.9% success on the first run, or 798 / 801 tests passing):
https://app.circleci.com/pipelines/github/aws-amplify/amplify-cli/14459/workflows/04f7137d-cc29-4997-8d2e-4433530d0825
All linux tests pass on the first run, some windows tests (8 test files containing 25 individual tests) have been moved to linux only due to flakiness in favor of more consistent runs.
You can also get an idea of the efficiency of this change here: https://app.circleci.com/insights/github/aws-amplify/amplify-cli/workflows/build_test_deploy_v3/overview?branch=run-e2e%2Faluja%2Fe2e-multi-core-optimizations&reporting-window=last-30-days
image

This PR includes several updates that are collectively required to make this work:

  1. Update Config files & Test setup files to use Worker Pools (maxWorkers=3, run in parallel)
  2. Update split-e2e-tests to assign multiple test files to each executor, making sure to consider Region specific tests, and Parent Account specific tests. Job names should be clear, and user friendly.
  3. Use timing data from CircleCI to match tests with similar durations together (this allows us to make efficient use of each worker pool)
  4. Update E2E framework to fix problems introduced with concurrency
  5. Update Tests as needed to fix problems introduced with concurrency
  6. Update E2E artifacts to work with concurrency (artifacts are now prefixed with the test name)
  7. Provide a mechanism to run tests independently if they don't pass otherwise (RUN_SOLO), and use minimal resources while doing so (use medium executors on linux for solo tests)

Here are some details on specific changes that were needed to fix problems with concurrency:

  1. Upgrade to Jest 27 (and related dependencies)
  2. Fix Tests that broke in Jest 27 (only 1, caused by changes to mock timers)
  3. Introduce a mechanism (in createProjectDir) that prevents tests from starting at the same time (stagger them to avoid race conditions when 'init' is called for the very first time on a machine)
  4. Update tests so that they call createProjectDir first (this was done for several migration tests)

Other work:

  1. Refactor CircleCI utilities into cci-utils.ts, cci-types.ts, cci.api.ts, etc
  2. Provide a mechanism to keep timing data up-to-date (yarn update-test-timing-data)

Issue #, if available

Description of how you validated changes

Checklist

  • PR description included
  • yarn test passes
  • Tests are changed or added
  • Relevant documentation is changed or added (and PR referenced)
  • New AWS SDK calls or CloudFormation actions have been added to relevant test and service IAM policies
  • Pull request labels are added

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

}
const castFile = `${new Date().getTime()}_${index}_${suffix}.cast`;
const castFile = `${testName}_${index}_${suffix}.cast`;
Copy link
Contributor Author

@awsluja awsluja Dec 30, 2022

Choose a reason for hiding this comment

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

In conclusion: This change works much better with concurrent tests - and looks awesome below:
image

if (process.env && process.env['CIRCLECI']) {
await staggerTestsThatRunOnTheSameMachine(projectPath);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is basic round robin scheduling during test startup.

I implemented it using the OS/filesystem because there is no other way to communicate between tests, and running init multiple times concurrently seems to cause a lot of errors with simulators (they apparently create files, and throw error if someone else has created them)

@@ -922,7 +922,7 @@ const cleanup = async (): Promise<void> => {

const filterPredicate = getFilterPredicate(args);
const accounts = await getAccountsToCleanup();
for(let i = 0 ;i < 5; i ++){
for(let i = 0 ;i < 3; i ++){
Copy link
Contributor Author

@awsluja awsluja Jan 11, 2023

Choose a reason for hiding this comment

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

I found that 5 iterations is overkill, since we've cleaned up most resources at this point - 3 should be enough moving forward

@@ -7,3 +7,4 @@ expect.extend({ toBeAS3Bucket });
const JEST_TIMEOUT = 1000 * 60 * 60; // 1 hour

jest.setTimeout(JEST_TIMEOUT);
jest.retryTimes(1);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this change allows a test to retry before all other tests are done, which is ideal because each executor has a worker pool of 3 threads (so there is no need to wait before retrying)

@@ -28,14 +28,14 @@ describe('test lambda layer migration flow introduced in v5.0.0', () => {
let projRoot: string;
let versionToMigrateFrom: string;

beforeAll(async () => {
beforeEach(async () => {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

this change, and similar changes to the files in src/tests/ are done to ensure that "createNewProjectDir(..)" is the first thing that happens in a test.

There were only a handful of tests that needed this, specifically - migration tests.

@awsluja awsluja changed the title ci: DRAFT e2e multi-core optimizations ci: e2e multi-core optimizations Jan 11, 2023
@awsluja awsluja marked this pull request as ready for review January 11, 2023 23:35
@awsluja awsluja requested a review from a team as a code owner January 11, 2023 23:35
@@ -119,8 +121,8 @@
"execa": "^5.1.1",
"glob": "^7.2.0",
"husky": "^3.1.0",
"jest": "^26.6.3",
"jest-circus": "^26.6.3",
"jest": "^27.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

Why not version 28 or 29?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

just to limit scope for this PR for the minimum incremental change needed

while(true){
if(fs.existsSync(lock)) {
await sleep(1 * 1000);// wait
// console.log("waiting to start");
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
// console.log("waiting to start");

const initialDelay = Math.floor(Math.random() * 15 * 1000);
await sleep(initialDelay);
while(true){
if(fs.existsSync(lock)) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Contributor Author

Choose a reason for hiding this comment

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

going to remove this code - so thats good :D

@@ -42,7 +42,9 @@ config();
* delete project directory
*/
export const deleteProjectDir = (root: string): void => {
rimraf.sync(root);
if(fs.existsSync(root)){
Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Contributor Author

Choose a reason for hiding this comment

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

in this case, projectDir paths are unique between the tests on the same machine - so we should be good

@@ -10,7 +10,7 @@ describe('api directives @auth batch 3a', () => {
let projectDir: string;

beforeEach(async () => {
projectDir = await createNewProjectDir('auth3');
projectDir = await createNewProjectDir('auth11a');
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a reason we don't just use UUID's here? Our test file names are undescriptive as is. If we decide to change those in the future, we don't want to track changes within the tests themselves. Is there something that prevents us from using randomized names?

Copy link
Contributor

@jhockett jhockett left a comment

Choose a reason for hiding this comment

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

Overall, really nice work!

Why is the empty file setup-jest.js needed?

I recommend installing prettier and fixing the indentation in the scripts so we avoid a large amount of white-space changes in future PRs

package.json Show resolved Hide resolved
Comment on lines 45 to 47
if(fs.existsSync(root)){
rimraf.sync(root);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

It's better to use a try/catch because otherwise there's a subtle race condition. The directory could be removed after the existsSync returns true, but before rimraf.sync is called.

scripts/artifact-storage-path-allow-list.ts Show resolved Hide resolved
}


const runit = async () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: please use a more descriptive name for this function

@@ -0,0 +1,1074 @@
{
"lastUpdated": "2022-12-31T02:03:46.162Z",
"totalTestFiles": 266,
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this the same as the length of timingData? If so, I would think computing the length is better to avoid having to ensure both are in sync.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

this is just some metadata to provide at a glance; its helpful to quickly see when the last updated time was & how many files we having timing data for

@@ -10,7 +10,7 @@ describe('api directives @auth batch 3a', () => {
let projectDir: string;

beforeEach(async () => {
projectDir = await createNewProjectDir('auth3');
projectDir = await createNewProjectDir('auth11a');
Copy link
Contributor

Choose a reason for hiding this comment

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

Ok, instead of manually updating these, we could create a helper function that does this for us. Something like

function getBasename(filename = ''): string {
  const filename = path.basename(filename);
  const extensionIndex = filename.lastIndexOf('.')
  if (extensionIndex < 0) {
      return filename ?? 'test';
  }
  return filename.slice(0, extensionIndex);
}
projectDir = await createNewProjectDir(getBasename(__filename));

scripts/split-e2e-tests-v2.ts Fixed Show resolved Hide resolved
spinner.start(
isPulling ? `Fetching updates to backend environment: ${currentEnv} from the cloud.` : `Initializing your environment: ${currentEnv}`,
printer.info(
isPulling ? `Fetching updates to backend environment: ${currentEnv} from the cloud.` : `Initializing your environment: ${currentEnv}`
Copy link
Contributor

Choose a reason for hiding this comment

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

See the codescanning notice -- printer is now unused, removed the import

});

if (workflowJob) {
Object.values(jobByRegion).forEach((regionJobs: any) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Formatting. The formatting in the whole file is non-standard and should be reformatted.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

thanks - just ran formatting on all files

}
export function saveJobMetrics(data: any): any {
console.log(`saving job metrics to ${JOB_METRICS_PATH}`);
fs.writeFileSync(JOB_METRICS_PATH, JSON.stringify(data, null, 2));

Check warning

Code scanning / CodeQL

Network data written to file

Write to file system depends on [Untrusted data](1). Write to file system depends on [Untrusted data](2).
@awsluja awsluja merged commit dc4e398 into aws-amplify:dev Jan 18, 2023
aws-eddy added a commit that referenced this pull request Jan 20, 2023
* chore: migrate custom category from inquirer to prompter library

* chore: Replace inquirer with amplify-prompts in amplify-category-analytics package

* fix: custom category prompter tests

* refactor: clean up dependencies in package.json, update messaging in pinpoing-walktrhough, update e2e tests for kinesis and pinpoint prompts

* chore: bump codegen version

* test: update snapshot after codegen version change

* chore: bump api category dependencies to @aws-amplify/[email protected]

* fix:  cfn ambda outputs when forcePush flag is used

* fix: add to migration test list

* fix: address comments

* fix: removes git clone windows test

* chore: removes redundant import

* fix: revert windows test

* fix: extract api call

* fix: set NoEcho flag on OAuth creds CFN param

* chore(release): Publish latest [ci skip]

 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]

* ci: e2e multi-core optimizations (#11685)

* ci: migrated to new test strategy

* chore: add other tests and migration too

* chore: cleanup

* chore: cleanup

* chore: cleanup unused e2e tests

* chore: remove generated file

* chore: remove parallelization blocker

* chore: force parallel runs

* chore: cleanup test list

* chore: disable retries and cleanup exclusions

* chore: bump test count to fill gaps

* chore: move random id earlier in project name

* chore: update yarn version

* chore: fix typo

* chore: try to fix delete issues

* chore: fix teardown on delete error

* ci: create custom file system mutex

* chore: cleanup logs

* ci: increase randomness of initial lock creation

* chore: move migration tests to small isolated vms

* chore: adjust concurrency

* chore: update naming

* ci: update reporter to better handle concurrent tests

* ci: add use parent account exceptions

* chore: cleanup naming, fix windows artifacts

* chore: use data to optimize test scheduling

* chore: cleanup

* chore: cleanup

* chore: fix call flow

* chore: workaround duplicate spinner bugs

* ci: split api_2 test

* chore: increase push timeout

* ci: add method to run solo tests

* ci: configure retries compatible with worker pools

* ci: workaround concurrent polling limits

* chore: fix bug with solo tests

* chore: move import & geo tests to run solo

* chore: add artifact scripts

* chore: trigger workflow results

* ci: fix artifact path

* chore: cleanup

* chore: add timer spy

* ci: update test lists

* chore: cleanup

* ci: fix retries

* ci: move delays to createProjectDir

* ci: use same script for e2e as linux on windows

* chore: split storage-1 test

* ci: fix config

* ci: add bash env

* ci: reduce timeout on push

* ci: update test lists

* ci: update test lists

* ci: lower timeout and enable concurrent migration testing

* ci: update test list

* ci: restructure migration test setups

* ci: cleanup to use file names instead of old job names

* chore: refactor

* ci: fix dependencies

* ci: attempt to fix retry on windows

* chore: revert retry changes

* chore: undo changes to addCircleCiTags

* chore: address PR feedback

* chore: undo changes to spinners

* chore: cleanup unused files

* chore: lint & formatting

* chore: lint, remove unused import

* chore: undo changes to initialize-env.ts

* chore: removed overly complicated and confusing logic in pinpoint walkthrough

* ci: windows smoke test list (#11797)

* ci: migrated to new test strategy

* chore: add other tests and migration too

* chore: cleanup

* chore: cleanup

* chore: cleanup unused e2e tests

* chore: remove generated file

* chore: remove parallelization blocker

* chore: force parallel runs

* chore: cleanup test list

* chore: disable retries and cleanup exclusions

* chore: bump test count to fill gaps

* chore: move random id earlier in project name

* chore: update yarn version

* chore: fix typo

* chore: try to fix delete issues

* chore: fix teardown on delete error

* ci: create custom file system mutex

* chore: cleanup logs

* ci: increase randomness of initial lock creation

* chore: move migration tests to small isolated vms

* chore: adjust concurrency

* chore: update naming

* ci: update reporter to better handle concurrent tests

* ci: add use parent account exceptions

* chore: cleanup naming, fix windows artifacts

* chore: use data to optimize test scheduling

* chore: cleanup

* chore: cleanup

* chore: fix call flow

* chore: workaround duplicate spinner bugs

* ci: split api_2 test

* chore: increase push timeout

* ci: add method to run solo tests

* ci: configure retries compatible with worker pools

* ci: workaround concurrent polling limits

* chore: fix bug with solo tests

* chore: move import & geo tests to run solo

* chore: add artifact scripts

* chore: trigger workflow results

* ci: fix artifact path

* chore: cleanup

* chore: add timer spy

* ci: update test lists

* chore: cleanup

* ci: fix retries

* ci: move delays to createProjectDir

* ci: use same script for e2e as linux on windows

* chore: split storage-1 test

* ci: fix config

* ci: add bash env

* ci: reduce timeout on push

* ci: update test lists

* ci: update test lists

* ci: lower timeout and enable concurrent migration testing

* ci: update test list

* ci: restructure migration test setups

* ci: cleanup to use file names instead of old job names

* chore: refactor

* ci: fix dependencies

* ci: attempt to fix retry on windows

* chore: revert retry changes

* chore: undo changes to addCircleCiTags

* chore: address PR feedback

* chore: undo changes to spinners

* chore: cleanup unused files

* chore: lint & formatting

* chore: lint, remove unused import

* chore: undo changes to initialize-env.ts

* ci: windows smoke test list for non-dev branches

* chore: remove verify-api pre-push hook (#11799)

* fix: remove production env variable from amplify script execution

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: test timeouts on simulator tests (#11804)

* ci: fix staleness filters (#11801)

* ci: fix staleness filters

* ci: only delete stale apps & stacks

* chore: refactor

* chore: migrate interactions category from inquirer to prompter library

* fix: default values for interactions prompter

* chore: addressed PR feedback

* chore: addressed PR feedback

* chore: Persist downstream exceptions in usage metrics (#11711)

* chore: Persist downstream exceptions in usage metrics

* fix variable name case

* chore: Populate cfn exceptions messages in AmplifyFault (#11764)

* chore: Persist cfn exceptions in usage metrics

* Add a tab between different cfn error messages

* refactor filtering the stacks with error

* build(deps): bump json5 from 1.0.1 to 1.0.2 (#11697)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci: fix cleanup script throttling (#11716)

* ci: update cleanup script to reduce throttling

* chore: add extract api file

* ci: fix condition

* chore: cleanup

* chore: add back logs

* chore: move cleanup to start to avoid deleting apps while running

* chore: update cleanup script

* chore: revert build change

* chore: fix md file

* chore: cleanup

* chore: address pr feedback

* chore: comments

* chore: refactor

* chore: fix lint issues

* chore: feature flag for Lazy Loading and Custom Selection Set support (#11566)

* chore: feature flag for iOS LazyReference and ModelPath support

* update FF naming

* chore: add debug command to all e2e tests

* fix: status command with --debug flag

* feat: revamp help command (#11667)

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command (resolving merge conflicts)

* feat: revamp help command (remove non-null assertions)

* feat: revamp help command (remove non-null assertions)

* feat: revamp help command (revisions)

* feat: revamp help command (revisions)

* feat: revamp help command (revisions)

* feat: revamp help command (update to use array find)

* feat: revamp help command (switch to single quotes)

* feat: revamp help command (switch to single quotes)

* feat: revamp help command (put imports on same line)

* feat: revamp help command (extract api)

* feat: revamp help command (prettier on help-helpers)

* feat: revamp help command (fix tag line)

* feat: revamp help command (changing test names)

* feat: revamp help command (refactoring preserveHelpInformation)

* fix(global-prefix): remove global-prefix package (#11408)

* fix: update prepush hook to clean and rebuild before running verify extract api (#11753)

* chore: add codeql scanning (#11518)

* chore: add codeql scanning

* fix: added quality scan to codeql

* fix: make prompter multi-select indicator more distinct (#11742)

* Convert back to async method

* Add some method comments

* fix type in the comments

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: awsluja <[email protected]>
Co-authored-by: Michael Law <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: Zachary Goldberg <[email protected]>
Co-authored-by: MorCohenAres <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: Edward Foyle <[email protected]>

* chore: addressed PR feedback

* chore: script to allow simple collection of coverage from all projects (#11798)

* chore: add coverage collection script for local unit tests runs

* fix: remove unused import

* fix: updated dev dependencies

* fix: added file level doc, filtered out unwanted coverage on e2e, lib, and test files

* fix: more descriptive filename for the script

* chore: addressed PR feedback

* fix: prompt string to match e2e (#11816)

Co-authored-by: Akshay Upadhyay <[email protected]>

* chore: correctly filter failed cfn events for displaying error messages (#11815)

* chore: do not filter AWS::CloudFormation::Stack type failure events if they have valid error message

* Update packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: kuhlmanp <[email protected]>
Co-authored-by: phani-srikar <[email protected]>
Co-authored-by: Al Harris <[email protected]>
Co-authored-by: Akshay Upadhyay <[email protected]>
Co-authored-by: Edward Foyle <[email protected]>
Co-authored-by: aws-amplify-bot <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: Danielle Adams <[email protected]>
Co-authored-by: awsluja <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: Amplifiyer <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Law <[email protected]>
Co-authored-by: Zachary Goldberg <[email protected]>
Co-authored-by: MorCohenAres <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: akshbhu <[email protected]>
aws-eddy added a commit that referenced this pull request Jan 23, 2023
* chore: migrate custom category from inquirer to prompter library

* chore: Replace inquirer with amplify-prompts in amplify-category-analytics package

* fix: custom category prompter tests

* refactor: clean up dependencies in package.json, update messaging in pinpoing-walktrhough, update e2e tests for kinesis and pinpoint prompts

* chore: bump codegen version

* test: update snapshot after codegen version change

* chore: bump api category dependencies to @aws-amplify/[email protected]

* fix:  cfn ambda outputs when forcePush flag is used

* fix: add to migration test list

* fix: address comments

* fix: removes git clone windows test

* chore: removes redundant import

* fix: revert windows test

* fix: extract api call

* fix: set NoEcho flag on OAuth creds CFN param

* chore(release): Publish latest [ci skip]

 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @aws-amplify/[email protected]

* ci: e2e multi-core optimizations (#11685)

* ci: migrated to new test strategy

* chore: add other tests and migration too

* chore: cleanup

* chore: cleanup

* chore: cleanup unused e2e tests

* chore: remove generated file

* chore: remove parallelization blocker

* chore: force parallel runs

* chore: cleanup test list

* chore: disable retries and cleanup exclusions

* chore: bump test count to fill gaps

* chore: move random id earlier in project name

* chore: update yarn version

* chore: fix typo

* chore: try to fix delete issues

* chore: fix teardown on delete error

* ci: create custom file system mutex

* chore: cleanup logs

* ci: increase randomness of initial lock creation

* chore: move migration tests to small isolated vms

* chore: adjust concurrency

* chore: update naming

* ci: update reporter to better handle concurrent tests

* ci: add use parent account exceptions

* chore: cleanup naming, fix windows artifacts

* chore: use data to optimize test scheduling

* chore: cleanup

* chore: cleanup

* chore: fix call flow

* chore: workaround duplicate spinner bugs

* ci: split api_2 test

* chore: increase push timeout

* ci: add method to run solo tests

* ci: configure retries compatible with worker pools

* ci: workaround concurrent polling limits

* chore: fix bug with solo tests

* chore: move import & geo tests to run solo

* chore: add artifact scripts

* chore: trigger workflow results

* ci: fix artifact path

* chore: cleanup

* chore: add timer spy

* ci: update test lists

* chore: cleanup

* ci: fix retries

* ci: move delays to createProjectDir

* ci: use same script for e2e as linux on windows

* chore: split storage-1 test

* ci: fix config

* ci: add bash env

* ci: reduce timeout on push

* ci: update test lists

* ci: update test lists

* ci: lower timeout and enable concurrent migration testing

* ci: update test list

* ci: restructure migration test setups

* ci: cleanup to use file names instead of old job names

* chore: refactor

* ci: fix dependencies

* ci: attempt to fix retry on windows

* chore: revert retry changes

* chore: undo changes to addCircleCiTags

* chore: address PR feedback

* chore: undo changes to spinners

* chore: cleanup unused files

* chore: lint & formatting

* chore: lint, remove unused import

* chore: undo changes to initialize-env.ts

* chore: removed overly complicated and confusing logic in pinpoint walkthrough

* ci: windows smoke test list (#11797)

* ci: migrated to new test strategy

* chore: add other tests and migration too

* chore: cleanup

* chore: cleanup

* chore: cleanup unused e2e tests

* chore: remove generated file

* chore: remove parallelization blocker

* chore: force parallel runs

* chore: cleanup test list

* chore: disable retries and cleanup exclusions

* chore: bump test count to fill gaps

* chore: move random id earlier in project name

* chore: update yarn version

* chore: fix typo

* chore: try to fix delete issues

* chore: fix teardown on delete error

* ci: create custom file system mutex

* chore: cleanup logs

* ci: increase randomness of initial lock creation

* chore: move migration tests to small isolated vms

* chore: adjust concurrency

* chore: update naming

* ci: update reporter to better handle concurrent tests

* ci: add use parent account exceptions

* chore: cleanup naming, fix windows artifacts

* chore: use data to optimize test scheduling

* chore: cleanup

* chore: cleanup

* chore: fix call flow

* chore: workaround duplicate spinner bugs

* ci: split api_2 test

* chore: increase push timeout

* ci: add method to run solo tests

* ci: configure retries compatible with worker pools

* ci: workaround concurrent polling limits

* chore: fix bug with solo tests

* chore: move import & geo tests to run solo

* chore: add artifact scripts

* chore: trigger workflow results

* ci: fix artifact path

* chore: cleanup

* chore: add timer spy

* ci: update test lists

* chore: cleanup

* ci: fix retries

* ci: move delays to createProjectDir

* ci: use same script for e2e as linux on windows

* chore: split storage-1 test

* ci: fix config

* ci: add bash env

* ci: reduce timeout on push

* ci: update test lists

* ci: update test lists

* ci: lower timeout and enable concurrent migration testing

* ci: update test list

* ci: restructure migration test setups

* ci: cleanup to use file names instead of old job names

* chore: refactor

* ci: fix dependencies

* ci: attempt to fix retry on windows

* chore: revert retry changes

* chore: undo changes to addCircleCiTags

* chore: address PR feedback

* chore: undo changes to spinners

* chore: cleanup unused files

* chore: lint & formatting

* chore: lint, remove unused import

* chore: undo changes to initialize-env.ts

* ci: windows smoke test list for non-dev branches

* chore: remove verify-api pre-push hook (#11799)

* fix: remove production env variable from amplify script execution

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: do not overload NODE_ENV env parameter for usage data filtering

* fix: test timeouts on simulator tests (#11804)

* ci: fix staleness filters (#11801)

* ci: fix staleness filters

* ci: only delete stale apps & stacks

* chore: refactor

* chore: migrate interactions category from inquirer to prompter library

* fix: default values for interactions prompter

* chore: addressed PR feedback

* chore: addressed PR feedback

* chore: Persist downstream exceptions in usage metrics (#11711)

* chore: Persist downstream exceptions in usage metrics

* fix variable name case

* chore: Populate cfn exceptions messages in AmplifyFault (#11764)

* chore: Persist cfn exceptions in usage metrics

* Add a tab between different cfn error messages

* refactor filtering the stacks with error

* build(deps): bump json5 from 1.0.1 to 1.0.2 (#11697)

Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* ci: fix cleanup script throttling (#11716)

* ci: update cleanup script to reduce throttling

* chore: add extract api file

* ci: fix condition

* chore: cleanup

* chore: add back logs

* chore: move cleanup to start to avoid deleting apps while running

* chore: update cleanup script

* chore: revert build change

* chore: fix md file

* chore: cleanup

* chore: address pr feedback

* chore: comments

* chore: refactor

* chore: fix lint issues

* chore: feature flag for Lazy Loading and Custom Selection Set support (#11566)

* chore: feature flag for iOS LazyReference and ModelPath support

* update FF naming

* chore: add debug command to all e2e tests

* fix: status command with --debug flag

* feat: revamp help command (#11667)

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command

* feat: revamp help command (resolving merge conflicts)

* feat: revamp help command (remove non-null assertions)

* feat: revamp help command (remove non-null assertions)

* feat: revamp help command (revisions)

* feat: revamp help command (revisions)

* feat: revamp help command (revisions)

* feat: revamp help command (update to use array find)

* feat: revamp help command (switch to single quotes)

* feat: revamp help command (switch to single quotes)

* feat: revamp help command (put imports on same line)

* feat: revamp help command (extract api)

* feat: revamp help command (prettier on help-helpers)

* feat: revamp help command (fix tag line)

* feat: revamp help command (changing test names)

* feat: revamp help command (refactoring preserveHelpInformation)

* fix(global-prefix): remove global-prefix package (#11408)

* fix: update prepush hook to clean and rebuild before running verify extract api (#11753)

* chore: add codeql scanning (#11518)

* chore: add codeql scanning

* fix: added quality scan to codeql

* fix: make prompter multi-select indicator more distinct (#11742)

* Convert back to async method

* Add some method comments

* fix type in the comments

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: awsluja <[email protected]>
Co-authored-by: Michael Law <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: Zachary Goldberg <[email protected]>
Co-authored-by: MorCohenAres <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: Edward Foyle <[email protected]>

* chore: addressed PR feedback

* chore: script to allow simple collection of coverage from all projects (#11798)

* chore: add coverage collection script for local unit tests runs

* fix: remove unused import

* fix: updated dev dependencies

* fix: added file level doc, filtered out unwanted coverage on e2e, lib, and test files

* fix: more descriptive filename for the script

* chore: addressed PR feedback

* fix: prompt string to match e2e (#11816)

Co-authored-by: Akshay Upadhyay <[email protected]>

* chore: correctly filter failed cfn events for displaying error messages (#11815)

* chore: do not filter AWS::CloudFormation::Stack type failure events if they have valid error message

* Update packages/amplify-provider-awscloudformation/src/aws-utils/aws-cfn.js

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: kuhlmanp <[email protected]>
Co-authored-by: phani-srikar <[email protected]>
Co-authored-by: Al Harris <[email protected]>
Co-authored-by: Akshay Upadhyay <[email protected]>
Co-authored-by: Edward Foyle <[email protected]>
Co-authored-by: aws-amplify-bot <[email protected]>
Co-authored-by: Pavel Lazar <[email protected]>
Co-authored-by: Danielle Adams <[email protected]>
Co-authored-by: awsluja <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: Amplifiyer <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Law <[email protected]>
Co-authored-by: Zachary Goldberg <[email protected]>
Co-authored-by: MorCohenAres <[email protected]>
Co-authored-by: Spencer Stolworthy <[email protected]>
Co-authored-by: akshbhu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants