Я разработал веб-приложение с использованием React поверх блокчейна Ethereum.
Одна из страниц моего приложения получает информацию от пользователя, например:
class AssetNew extends Component {
state = {
name: "",
description: "",
manufacturer: "",
price: "",
errorMessage: ""
};
onSubmit = async event => {
event.preventDefault();
const { name, description, manufacturer, price} = this.state;
this.setState({errorMessage: "" });
try {
const accounts = await web3.eth.getAccounts();
await tracker.methods
.createAsset(name, description, manufacturer, price)
.send({
from: accounts[0],
value: web3.utils.toWei(this.state.price, "ether"),
gas: "1000000"
});
} catch (err) {
this.setState({ errorMessage: err.message });
}
};
render() {
return (
<Form onSubmit={this.onSubmit} error={!!this.state.errorMessage}>
<Form.Field>
<label>Name</label>
<Input
value={this.state.name}
onChange={event => this.setState({ name: event.target.value })}
/>
</Form.Field>
.... // three more from.field for description, manufacturer and price
);
}
}
export default AssetNew;
Эта страница получает имя, описание, производителя и цену и отправляет их в смарт-контракт для регистрации нового продукта. Все отлично работает с браузером (я могу создать новый продукт с помощью формы).
Однако я не могу создать новый продукт с Jmeter.
Я пытался отправить параметры методом POST:
После запуска теста Http-запросы успешны, но ничего не происходит (я ожидаю, что Jmeter создаст новый продукт).
Стоит ли ожидать, что Jmeter создаст новый продукт, передав параметры?
Правильно ли я проверяю производительность?
Умный контракт для создания нового продукта:
contract AssetTracker {
uint public id;
uint nonce;
struct Asset {
string name;
string description;
string manufacture;
uint price;
uint id;
address owner;
bool initialized;
}
Asset[] public assets;
function createAsset(string name, string description, string manufacture, uint price) public payable{
id = uint(keccak256(now, msg.sender, nonce)) % 1000;
nonce++;
Asset memory newAsset = Asset(name, description, manufacture, price, id, msg.sender, true);
assets.push(newAsset);
}