Skip to content

Commit

Permalink
ok
Browse files Browse the repository at this point in the history
  • Loading branch information
technicallyty committed Mar 8, 2025
1 parent 121e963 commit 7366542
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 234 deletions.
9 changes: 5 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -506,8 +506,9 @@ test-system: build-v50 build


build-v50:
git checkout release/v0.50.x
make build
mv build/simd build/simdv50
git checkout release/v0.53.x
CURRENT_BRANCH=$$(git rev-parse --abbrev-ref HEAD) && \
git checkout release/v0.50.x && \
make build && \
mv build/simd build/simdv50 && \
git checkout $$CURRENT_BRANCH
.PHONY: build-v50
230 changes: 0 additions & 230 deletions tests/systemtests/unordered_tx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,7 @@
package systemtests

import (
"archive/tar"
"archive/zip"
"compress/gzip"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"path/filepath"
"runtime"
"strings"
"testing"
"time"

Expand Down Expand Up @@ -68,9 +57,6 @@ func TestTxBackwardsCompatability(t *testing.T) {
// Scenario:
// A transaction generated from a v0.53 chain without unordered and timeout_timestamp flags set should succeed.
// Conversely, a transaction generated from a v0.53 chain with unordered and timeout_timestamp flags set should fail.
err := DownloadSimdBinary(t, "v0.50.5", systest.WorkDir+"/binaries/simdv50")
require.NoError(t, err)

var (
denom = "stake"
transferAmount int64 = 1000
Expand Down Expand Up @@ -116,219 +102,3 @@ func TestTxBackwardsCompatability(t *testing.T) {
code := gjson.Get(response, "code").Int()
require.Equal(t, int64(0), code)
}

const (
repoOwner = "cosmos"
repoName = "cosmos-sdk"
)

type Release struct {
TagName string `json:"tag_name"`
Name string `json:"name"`
Assets []Asset `json:"assets"`
}

type Asset struct {
Name string `json:"name"`
BrowserDownloadURL string `json:"browser_download_url"`
Size int64 `json:"size"`
}

func DownloadSimdBinary(t *testing.T, version string, installPath string) error {
tag := url.PathEscape("simd/" + version)
apiURL := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/tags/%s", repoOwner, repoName, tag)

resp, err := http.Get(apiURL)
if err != nil {
return fmt.Errorf("failed to fetch release: %w", err)
}
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
return fmt.Errorf("GitHub API returned status: %s", resp.Status)
}

var release Release
if err := json.NewDecoder(resp.Body).Decode(&release); err != nil {
return fmt.Errorf("failed to decode release response: %w", err)
}

osName, arch := runtime.GOOS, runtime.GOARCH
targetName := fmt.Sprintf("simd-%s-%s-%s", version, osName, arch)

var matchingAsset *Asset
for _, asset := range release.Assets {
if strings.Contains(asset.Name, targetName) {
matchingAsset = &asset
break
}
}

if matchingAsset == nil {
return fmt.Errorf("no matching binary found for %s/%s", osName, arch)
}

t.Logf("Downloading %s...", matchingAsset.Name)
tmpArchive, err := os.CreateTemp("", matchingAsset.Name)
if err != nil {
return fmt.Errorf("failed to create temp file: %w", err)
}
defer os.Remove(tmpArchive.Name())
defer tmpArchive.Close()

assetResp, err := http.Get(matchingAsset.BrowserDownloadURL)
if err != nil {
return fmt.Errorf("failed to download asset: %w", err)
}
defer assetResp.Body.Close()

if _, err = io.Copy(tmpArchive, assetResp.Body); err != nil {
return fmt.Errorf("failed to save asset: %w", err)
}

extractDir, err := os.MkdirTemp("", "simd_extract_*")
if err != nil {
return fmt.Errorf("failed to create temp extract dir: %w", err)
}
defer os.RemoveAll(extractDir)

t.Logf("Extracting to %s...", extractDir)
if strings.HasSuffix(matchingAsset.Name, ".tar.gz") {
err = extractTarGz(tmpArchive.Name(), extractDir)
} else if strings.HasSuffix(matchingAsset.Name, ".zip") {
err = extractZip(tmpArchive.Name(), extractDir)
} else {
return fmt.Errorf("unknown archive format: %s", matchingAsset.Name)
}
if err != nil {
return fmt.Errorf("failed to extract archive: %w", err)
}

var simdBinaryPath string
err = filepath.Walk(extractDir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if info.Mode().IsRegular() && info.Name() == "simd" {
simdBinaryPath = path
return io.EOF
}
return nil
})
if err != nil && err != io.EOF {
return fmt.Errorf("error finding simd binary: %w", err)
}
if simdBinaryPath == "" {
return fmt.Errorf("simd binary not found in extracted files")
}

t.Logf("Installing simd binary to %s...", installPath)
input, err := os.Open(simdBinaryPath)
if err != nil {
return fmt.Errorf("failed to open simd binary: %w", err)
}
defer input.Close()

output, err := os.OpenFile(installPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0755)
if err != nil {
return fmt.Errorf("failed to create install file: %w", err)
}
defer output.Close()

if _, err := io.Copy(output, input); err != nil {
return fmt.Errorf("failed to install simd binary: %w", err)
}

t.Log("simd binary installed successfully!")
return nil
}

func extractTarGz(archivePath, destDir string) error {
file, err := os.Open(archivePath)
if err != nil {
return err
}
defer file.Close()

gzr, err := gzip.NewReader(file)
if err != nil {
return err
}
defer gzr.Close()

tr := tar.NewReader(gzr)
for {
header, err := tr.Next()
if err == io.EOF {
break
}
if err != nil {
return err
}

target := filepath.Join(destDir, header.Name)
switch header.Typeflag {
case tar.TypeDir:
if err := os.MkdirAll(target, 0755); err != nil {
return err
}
case tar.TypeReg:
if err := os.MkdirAll(filepath.Dir(target), 0755); err != nil {
return err
}
outFile, err := os.Create(target)
if err != nil {
return err
}
if _, err := io.Copy(outFile, tr); err != nil {
outFile.Close()
return err
}
outFile.Close()
}
}
return nil
}

func extractZip(archivePath, destDir string) error {
r, err := zip.OpenReader(archivePath)
if err != nil {
return err
}
defer r.Close()

for _, f := range r.File {
filePath := filepath.Join(destDir, f.Name)
if f.FileInfo().IsDir() {
if err := os.MkdirAll(filePath, 0755); err != nil {
return err
}
continue
}

if err := os.MkdirAll(filepath.Dir(filePath), 0755); err != nil {
return err
}

outFile, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
if err != nil {
return err
}

rc, err := f.Open()
if err != nil {
outFile.Close()
return err
}

_, err = io.Copy(outFile, rc)

outFile.Close()
rc.Close()

if err != nil {
return err
}
}
return nil
}

0 comments on commit 7366542

Please sign in to comment.